既存のクラス ライブラリの単純なラッパー クラスをいくつか作成したいと考えています。構文を読みやすく、推測しやすいものにするために (コード補完を介して)、java.lang.Objectのメソッドを削除したいと思います。
問題は、Java のすべての非アトミックなものが Object から継承されるため、これらのメソッドを持つことです。列挙型とインターフェイスを介してラッパー構文を作成しようとしましたが、成功しませんでした。列挙型とインターフェースもjava.lang.Objectsであるためです。
java.lang.Object には、インターフェースのコード補完で見たくない 9 つのメソッドがあります。削除したいもの (赤) と保持したいもの (緑) は次のとおりです。
代替テキスト 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
すると、メソッドの可視性が低下します。たとえば、ビルダーが複数のインターフェイスを実装している場合です。残念ながら、すべての java.lang.Object メソッドは残ります。
このメソッドの非表示が Java で可能である場合 (おそらく注釈を使用しますか?)、IDE に依存しない素敵なライブラリを作成できます (どこでも素敵なコード補完)。そうでない場合は、少なくとも Eclipse IDE (おそらくプラグイン) には、java.lang.Object メソッドの非表示を提供できるトリックがあるかもしれません。