ジェネリックに関連する次の問題があります。私は次のものを持っています:
InterfaceA として:
public interface InterfaceA {
public <T extends DTOInterface> Object methodName (T dto) {}
}
DTOInterface は単なる空のインターフェースです。
次に、私の実装は次のようになります。
public class ImplementationA implements InterfaceA {
public Object methodName(DTOImplementation dto) {
return null;
}
}
DTOImplementation は、DTOInterface を実装する単なるクラスです。
これは、ImplementationA のメソッドが InterfaceA のメソッドの有効な実装として認識されないため、失敗しています。
ただし、インターフェイスレベルでパラメーターを定義すると、つまり
public interface InterfaceA **<T extends DTOInterface>** {
public Object methodName (T dto) {}
}
次に、実装を次のように定義します。
public class ImplementationA implements **InterfaceA<DTOImplementation>** {
public Object methodName(DTOImplementation dto) {
return null;
}
}
それは機能します。メソッドは有効な実装として認識されます。
なぜこれが起こっているのか誰にも分かりますか?