java - 将子对象和父对象的 Arraylist 传递给同一个方法

标签 java inheritance multiple-inheritance

我有一个扩展了 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/

相关文章:

java - 使用数据文件部署 Java 应用程序、Java Applet 和 Android 应用程序的正确方法是什么?

java - gwt 接口(interface) HostedModeOptions 扩展了超过 1 个类

java maven exec-maven-plugin 没有在 mvn clean install 上执行

java - 返回子类对象的通用 getter

nhibernate - 将对象从基类转换为子类是否有效?

c++ - 实现可克隆 C++ 类的最佳方式?

vb.net - VB .Net 中是否可以进行多重继承?

c++ - 关于多重继承和定义虚函数

java - 从 JSON 字符串在 EditText 上显示 HTML

java - 忽略反序列化中的计算字段