0

List<? extends A>1 つのクラス (A) を拡張する 4 つのクラス (B、C、D、E) があります。ジェネリックを作成して、いずれかのクラス (B、C、D、E) のオブジェクトを追加しようとしています 。問題なくできます。問題は、クラス (B、C、D、E) のメソッドにアクセスできないことです。これを行う別の方法はありますか?

部品コード

public class A{
    protected int id;

    public void setId(int id){}
    public int getId(){}
}

public class B extends A{
    private name;

    public void setName(String name){}
    public void getName(){}
}

public class Generic{
    List<? extends A> myList;

    public List<? extends A> getMyList(){}
    public void setList(ArrayList<? extends A> MyList){}
}

そして、これが私がしていることです。

Generic myObject = new myList<B>;
myObject.getMyList().get(counter).getId();

上記のコードは正常に動作しますが、やりたいことはできませんが、以下はできません。

myObject.getMyList().get(counter).getName();
4

2 に答える 2

0

複数の可能性があります。

  1. メソッド定義を基本クラスに移動します (抽象メソッドとして)
  2. 具体的なクラスのインスタンスを確認し、それに応じてキャストします
  3. インターフェイスでメソッドを定義し (メソッド x 用に 1 つ、メソッド Y 用に 1 つなど)、「&」表記を使用しますList<? extends A & Y & Z >(Y と Z はここではインターフェイスです) 。
于 2013-06-26T13:54:00.573 に答える