これはインターフェースではなく、クラス (またはキーワードも欠落している抽象クラスabstract
) のようです。次のようにする必要があります:-
public interface Foo<T> {
T doSomething();
}
その上
public class Bar implements Foo<Number> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
コンパイル時エラーが発生します。
The interface Foo cannot be implemented more than once with different arguments: Foo<Number> and Foo<Integer>
しかし、代わりに行う場合:-
public class Bar implements Foo<Integer> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
これはコンパイル時エラーを発生させませんdoSomething()
。Bar2 で実装する場合は、実行時にそれを考慮します:-
Bar2 bar2=new Bar2();
bar2.doSomething();
それ以外の場合は、doSomething()
から実行されますBar
そして明らかにあなたがそうするなら:-
Bar bar=new Bar();
bar.doSomething();
今回は1つしか実装されていないため、doSomething()
を考慮します。つまり、の(インターフェースを実装しているため、実装する必要があります:))Bar
doSomething()
Bar
Bar
Foo