4

インターフェイスのメソッド シグネチャに「このクラス」型の引数を持ちたいので、たとえばMyClass、それを実装する任意のクラスが型の引数を持つそのメソッドを持つようにしますMyClass

public interface MyInterface {
    public thisClass myMethod(thisClass other);
    ...
}
public class MyClass implements MyInterface {
    // has to reference this class in the implementation
    public MyClass myMethod(MyClass other){
        ...
    }
}
これは可能ですか、それとも引数をインターフェイスにバインドして、各実装でチェックする必要がありますか?

4

2 に答える 2

3
public interface MyInterface<T> {
   public T myMethod(T other);
   ...
}

public class MyClass implements MyInterface<MyClass> {
   // has to reference this class in the implementation
   public MyClass myMethod(MyClass other){
      ...
   } 
}
于 2010-08-28T02:59:12.120 に答える
3

これにより、 T がインターフェースを実装するクラスであることが多少強制されます。

public interface MyInterface<T extends MyInterface<T>> {
   public T myMethod(T other);
   ...
}
于 2010-08-28T03:18:21.867 に答える