3

私はJavaにかなり慣れていないため、インターフェースをあまり使用していません。これは非常に基本的な質問だと思います。

インターフェイス、それを拡張する 2 番目のインターフェイス、および 2 番目のインターフェイスを実装するクラスを定義します。

public interface I1 {
  public void doStuff();
}

public interface I2 extends I1 {
  public void doMoreStuff();
}

public class C2 implements I2 {
  public void doStuff(){
    // implements I1 as required
  }
  public void doMoreStuff(){
    // implements I1 as required
  }
}

次に、インターフェイス I1 を実装するオブジェクトのコレクションを引数として持つメソッドを呼び出します。

public class C3 {
   public static void doI1Stuff(List<I1> implementorsOfI1){
      // code here
   }
}

しかし、次のようなことをしようとすると、上記のエラーが発生します

C2 aC2 = new C2();
List c2L = new List<I2>();
c2L.add(aC2);
C3.doI1Stuff(c2L);

私がやったことは、Java 初心者の私には理にかなっているように思えます。なぜうまくいかないのでしょうか? より経験豊富なプログラマーならどうするでしょうか? どこかで非常に単純な間違いを犯したことを願っていますが、これは実際に可能です...

(修正された質問:単一のC2オブジェクトを扱っているが、それらのコレクションを扱っていない場合は(返信が述べたように)機能します...)

4

1 に答える 1