我有一个扩展了 A 类的 B 类。我如何在 C 类中编写一个方法来接收包含 B 类或 A 类对象的 ArrayList 而无需覆盖?
public class A {
//Some methods here
}
public class B extends A {
//Some methods here
}
public class C {
public Static void main(String[] args){
ArrayList<A> one = new ArrayList<>();
one.add(new A());
ArrayList<B> two = new ArrayList<>();
two.add(new B())
doStuff(one);
doStuff(two);
}
public void doStuff(args){
//go ahead do stuff
}
}
最佳答案
使用带有通配符的泛型表示您将接受是 的任何列表 A
或扩展 A
.
public void doStuff(List<? extends A> list) {
...
}
如果您想捕获您要编写的确切列表类型:
public <T extends A> void doStuff(List<T> list) {
...
}
然后你可以使用T
在方法里面。如果你不需要 T
, 坚持第一种方法。
关于java - 将子对象和父对象的 Arraylist 传递给同一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51985355/