将子对象和父对象的 Arraylist 传递给相同的方法

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)

Joh*_*ica 7

使用带有通配符的泛型表示您将接受任何is Aextends 的列表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,请坚持使用第一种方法。