2015-10-14 56 views
2

java如何使用引用存储和处理泛型信息。java如何处理泛型引用

List<A>List<?>的子类型。请解释上述说明。继承如何与泛型对象的引用协同工作。

+4

可能的重复[Java泛型 - 类型擦除 - 何时发生](http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens) – stevecross

回答

0

AB的子类型”意味着在需要输入B的任何地方,您也可以使用类型A。在您的声明List<?>类型是“任何类型的对象的列表,我们不关心它”和List<A>类型是“类型对象列表A”。因此,应该很明显,无论我们需要什么“任何类型的对象列表”,我们也可以使用“A类型的对象列表”。

0

Java Docs

的无界通配符类型是使用通配符(?)中指定,例如,列表。这被称为未知类型的列表。有两种情况,无界通配符是一种有用的方法:

  1. 如果您正在编写可使用Object类中提供的功能实现的方法。
  2. 当代码使用泛型类中不依赖于类型参数的方法时。

无界(?)移动到类型()从通用具体实体移开。

让我们通过我自己的例子。

  1. 地球,行星都万物

  2. 动物是一些活物

  3. 人类是动物用两条腿和2只手

  4. 男子&女子是两类人类。

如果你有?在列表中,您可以将列表应用到生活事物。但是如果你想让你的名单只包含人类或男士女士,你会根据你的需要决定有界的类型。

随着您从通用移动到特定:列表<?>,列表<生物>,列表<人类>,列表<男性>,您正在向您的实体应用更具体的东西。

树是人类或男人这样的生物,但它不能像男人那样有2条腿和2只手,它不能思考。

您必须决定要在哪个特定级别将实体绑定到特定类型。