java - 如果不能使用通配符,如何列出几种对象?

标签 java bounded-wildcard generics

我想做一个List可以装两种Object .我想到的是使用通配符。下面是我的代码。

public class Parent {
  //code  
}

public class ChildOne extends Parent {
  //code
}

public class ChildTwo extends Parent {
  //code
}

public class Implementation {

  List<? extends Parent> list;

  public Implementation() {

    list.add(new ChildOne());
    list.add(new ChildTwo());

    ChildOne co = list.get(0);
    ChildTwo ct = list.get(1);

  }

}

我不能使用 <? extends Parent> , 因为我做 add .

但是,我不能使用 <? super Parent>要么,因为我做get .

This question声明:don't use a wildcard when you both get and put. .

那么,如何在不使用通配符的情况下制作几种对象的列表?

最佳答案

通配符不适用于此用例。你应该简单地做

List<Parent> list = new ArrayList<>();

并转换get的返回值:

ChildOne co = (ChildOne) list.get(0);
ChildTwo ct = (ChildTwo) list.get(1);

关于java - 如果不能使用通配符,如何列出几种对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161827/

相关文章:

c# - 将对象显式转换为 C# 中仅在运行时可用的泛型类型的另一个对象

java - Spark foreachPartition 仅在 master 上运行

java - 类型注释属于有界通配符的什么位置?

java - Bounded Type parameter (T extends) 和 Upper Bound Wildcard (? extends) 的区别

ios - Swift 泛型函数问题。减少重复代码

delphi - 如何使用通用TList的OnNotify

Java android 文件输入流文件输出流问题

java - 带按钮的 table

java - 在 Java 中解析用户定义的格式

带有泛型的 Java F 绑定(bind)类型