8

既存のクラス ライブラリの単純なラッパー クラスをいくつか作成したいと考えています。構文を読みやすく、推測しやすいものにするために (コード補完を介して)、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 メソッドの非表示を提供できるトリックがあるかもしれません。

4

1 に答える 1

29

Eclipse 3.4 の場合、少なくとも次のことができます。

1) [設定] -> [Java] -> [外観] -> [タイプ フィルター] に移動します。2) [追加] をクリックし、次のように入力します。java.lang.Object

コードアシストでは、から直接継承されたメソッドjava.lang.Objectが消えます

于 2009-02-23T19:17:48.627 に答える