我想为现有的类库创建一些简单的包装类。为了使语法易于阅读并且易于猜测(通过代码完成),我想删除java.lang.Object的方法。
问题是java中的所有非原子事物都继承自Object,因此具有这些方法。我已经尝试通过枚举和接口创建包装语法,但没有成功;因为枚举和接口也是java.lang.Objects。
java.lang.Object 有九种我不想在我的接口的代码完成中看到的方法。这是我要删除的内容(红色)和我要保留的内容(绿色):
替代文本 http://ju.venile.de/upload/java-lang-object-methods.png
下面是一些示例代码,用于围绕现有类创建漂亮的包装器(Builder 模式):
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
语句转换为接口将降低方法的可见性,例如,如果构建器实现了多个接口。不幸的是,所有 java.lang.Object 方法都将保留。
如果这种方法隐藏在 Java 中是可能的(也许使用注释?),我可以创建一个很好的库,它与 IDE 无关(到处都有很好的代码完成)。如果没有,那么至少 Eclipse IDE(可能是插件?)可能有一个技巧,可以提供 java.lang.Object 方法隐藏。