java如何使用引用存储和处理通用信息。
List<A>
是List<?>
的子类型。请解释以上声明。继承如何与泛型对象的引用一起使用。
答案 0 :(得分:0)
“A
是B
的子类型”意味着在需要B
类型的任何地方,您也可以使用A
类型。在您的语句中List<?>
类型是“任何类型的对象列表,我们不关心它”,List<A>
类型是“A
类型的对象列表”。因此,显而易见的是,在我们需要“任何类型的对象列表”的任何地方,我们也可以使用“A
类型的对象列表”。
答案 1 :(得分:0)
使用通配符(?)指定无界通配符类型,例如List。这称为未知类型的列表。有两种情况,无界通配符是一种有用的方法:
- 如果您正在编写可以使用Object类中提供的功能实现的方法。
- 当代码使用泛型类中不依赖于类型参数的方法时。
醇>
从无界(?)转移到有界类型()正在从通用转移到特定实体
让我们来看看我自己的例子。
地球,一颗行星生物
动物,树木是生物
人类是有两条腿和两只手的动物
男士&amp;女性是两种类型的人。
如果有的话?在列表中,您可以将列表应用于生物。但是,如果您希望您的列表仅包含人类或男性或女性,您将根据需要决定有界类型。
当您从通用转移到特定时:列表&lt; ? &GT; ,列表&lt;生物&gt;,列表&lt;人类&gt;,列表&lt;男士&gt;,您正在向您的实体应用更具体的内容。
树是一个像人类或男人一样的生物,但它不能像男人那样有2条腿和2只手,它无法思考。
您必须决定在哪个特定级别将实体绑定到特定类型。