java - 泛型父类作为列表中的多态变量

标签 java generics polymorphism

我想知道是否可以使用通用父类作为列表中的多态变量。

我在这里的术语可能不正确,所以下面是一些代码,基本上概述了我想要做的事情。

abstract class parent<T>
{
     private T var;
     abstract T evaluate();
}
class child1 extends parent<Integer>
{
     Integer evaluate() { return var; }
}
class child2 extends parent<Boolean>
{
     Boolean evaluate() { return var; }
}

ArrayList<parent>  list1 = new ArrayList<parent>();
list1.add(new child1());
list1.add(new child2());

for(parent list_item : list1) { list_item.evaluate(); }

我知道这可能是不可能的,任何在正确方向上的帮助将不胜感激。

最佳答案

避免使用原始类型。使用通配符代替:

ArrayList<parent<?>> list1 = new ArrayList<>();
list1.add(new child1());
list1.add(new child2());

关于java - 泛型父类作为列表中的多态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980332/

相关文章:

java - 无法使用模式匹配器获得正确的输出

java - 将 Java 数组和基元 (double[][]) 重构为集合和泛型 (List<List<Double>>)

java - 如何在没有警告的情况下转换 java.lang.Class<?> 类型的对象?

java - 使用 IntelliJ 2017.1 时,它反复显示 : Unable to save settings: Failed to save settings. 请重新启动 IntelliJ IDEA

java - Kodein 与 Dagger - 无法让 Dagger 使用多个模块工作

haskell - Either 类型构造函数是否包含左/右大小写的幻像类型?

c++ - 如何从父类中的函数调用子类的重载运算符,该函数将对父类的引用作为参数?

java - 强制方法重载

java - iReport : How to add a group after another (not inside)

c# - 致专家:此代码有何区别?