名单<! - ?扩展A - >访问扩展类方法

时间:2013-06-26 13:28:24

标签: java list generics

我有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();

2 个答案:

答案 0 :(得分:0)

你有多种可能性:

  1. 将方法定义移至基类(作为抽象方法)
  2. 检查具体类的实例并进行相应的转换
  3. 定义接口中的方法(一个用于方法x,一个用于方法Y等)并使用“&amp;”符号:List<? extends A & Y & Z >(Y和Z是这里的接口)

答案 1 :(得分:0)

有人发布了上面的代码然后删除了它。

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

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

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