java - 如何从代码完成中隐藏所有 java.lang.Object 方法?

标签 java syntax syntactic-sugar

我想为现有的类库创建一些简单的包装类。为了使语法易于阅读和猜测(通过代码完成),我想删除 java.lang.Object 的方法。

问题是java中所有非原子的东西都继承自Object,因此有这些方法。我已经尝试通过枚举和接口(interface)创建包装器语法,但没有成功;因为 enumsinterfaces 也是 java.lang.Objects

java.lang.Object 有九种方法,我不想在我的接口(interface)的代码完成中看到它们。这是我想要删除的(红色)和我想要保留的(绿色):

alt text http://ju.venile.de/upload/java-lang-object-methods.png

下面是一些示例代码,用于围绕现有类创建漂亮的包装器(构建器模式):

public interface IMySyntax{
  public IMySyntax myMethod1();
  public IMySyntax myMethod2();
}

public class MyBuilder implements IMySyntax{
  public static IMySyntax build(){ return (IMySyntax) new MyBuilder() }
  public IMySyntax myMethod1(){ /* do something */ return (IMySyntax) this }
  public IMySyntax myMethod2(){ /* do something */ return (IMySyntax) this }     
}

新包装器代码的用法应如下所示:

MyBuilder.build()
         .myMethod1()
         .myMethod2();

将构建器的所有 this 语句强制转换为接口(interface)会降低方法的可见性,例如如果构建器实现了不止一个接口(interface)。不幸的是,所有 java.lang.Object 方法都将保留。

如果这个方法隐藏在 Java 中是可能的(也许使用注释?),我可以创建一个很好的库,它与 IDE 无关(很好的代码完成无处不在)。如果没有,那么至少 Eclipse IDE(也许是插件?)可能有一个技巧可以提供 java.lang.Object 方法隐藏。

最佳答案

对于 Eclipse 3.4,至少您可以执行以下操作:

1) 转到首选项 -> Java -> 外观 -> 类型过滤器 2) 点击添加,输入java.lang.Object

现在在代码辅助中,直接从java.lang.Object继承的方法将消失

关于java - 如何从代码完成中隐藏所有 java.lang.Object 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578897/

相关文章:

java - spring webflow 中的重定向错误消息

java - 您能否在不显式列出它们的情况下从命令行运行包中的所有 JUnit 测试?

javascript - JS 中声明对象和数组加引号是不是更快?

c++ - 没有 typedef 的函数指针

c++ - 为什么 C++ 容器没有 contains 方法?

java - jsp获取ip地址

syntax - Common Lisp 中 eq、eql、equal 和 equalp 之间有什么区别?

syntax - Clojure - 引用和语法引用之间的区别

r - Rcpp 中的高效子集化(相当于 R "which"命令)

java - 在 Maven 插件中设置 fork 和 spawn