2009-02-23 13 views
8

私は既存のクラスライブラリのためのいくつかの単純なラッパークラスを作成したい。構文を読みやすくして(コード補完を介して)推測していいですか?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の場合

+1

私はこのスコープを特定のIDE(Eclipseのようなもの)に制限したいと思うかもしれません。私は99%がIntelliJ IDEがすぐにこれを行うことを確信しています(つまり、最も関連性の高い方法を最初に置く)。 –

答えて

26

少なくともあなたが次の操作を行うことができます。

1)環境設定に行く - > Javaの - >外観 - >型フィルタ 2)を追加]をクリックし、コードの中で今java.lang.Object

を入力します。助けて、java.lang.Objectから直接継承されたメソッドは消え去ります

+0

Thx! 誰もすぐにJavaベースの回答が出てこない場合、私はこれを受け入れます。 – Juve

+0

私はこのアプローチをお勧めします。また、使用するプロポーザルの種類をeclipseに伝えることもできます。 –

+0

たとえば、toStringが必要な場合は、完了からまったく見逃してしまうという問題です。 2つ以上の文字を入力した場合、またはリストの終わりを置いてデフォルトでそれを灰色にした場合にのみ、それらを照合するより洗練されたソリューションが必要です。 –

関連する問題