私は既存のクラスライブラリのためのいくつかの単純なラッパークラスを作成したい。構文を読みやすくして(コード補完を介して)推測していいですか?java.lang.Objectのメソッドを削除したいと思います。すべてのjava.lang.Objectメソッドをコード補完から隠すにはどうしたらいいですか?
問題は、Javaのすべての非アトミックなものがObjectから継承されているため、これらのメソッドがあることです。私はすでに、成功せずにenumとインターフェイスを使ってラッパー構文を作成しようとしました。 列挙型およびインターフェイスもjava.lang.Objectsです。
java.lang.Objectには、インターフェイスのコード補完では見たくない9つのメソッドがあります。ここで私は(赤)を削除し、私が(緑)を維持したいしたいものです。
ここ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 }
}
新しいラッパーコードの
使い方は次のようになります。INTERFにビルダーのすべてthis
文をキャスティング
MyBuilder.build()
.myMethod1()
.myMethod2();
メソッドの可視性が低下します。ビルダーが複数のインタフェースを実装している場合すべてのjava.lang.Objectメソッドは残念です。
Javaで(おそらくAnnotationsを使用して)このメソッドの隠蔽が可能だった場合、私はIDEにとらわれない素晴らしいライブラリを作成できました。そうでなければ、少なくともEclipse IDE(おそらくプラグイン?)のトリックがあり、java.lang.Objectメソッド隠蔽を提供することができます。 Eclipseの3.4の場合
私はこのスコープを特定のIDE(Eclipseのようなもの)に制限したいと思うかもしれません。私は99%がIntelliJ IDEがすぐにこれを行うことを確信しています(つまり、最も関連性の高い方法を最初に置く)。 –