0

我有 4 个类(B、C、D、E)扩展了一个类(A),我正在尝试创建一个泛型 List<? extends A>来添加其中一个类(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,一种用于方法 Y,等等)并使用“&”符号:List<? extends A & Y & Z >(Y 和 Z 在这里是接口)
于 2013-06-26T13:54:00.573 回答
0

有人贴了上面的代码,然后删除了。

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

    public List<T> getMyList(){}
    public void setList(ArrayList<T> MyList){}
}

这解决了我的问题,谢谢!

于 2013-06-28T19:43:34.727 回答