sam*_*avi 1 java inheritance multiple-inheritance
我有 B 类扩展 A 类。如何在 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
}
}
Run Code Online (Sandbox Code Playgroud)
使用带有通配符的泛型表示您将接受任何is A或extends 的列表A。
public void doStuff(List<? extends A> list) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果您想捕获您要编写的确切列表类型:
public <T extends A> void doStuff(List<T> list) {
...
}
Run Code Online (Sandbox Code Playgroud)
然后你可以T在方法内部使用。如果您不需要T,请坚持使用第一种方法。