原始类型,无限制通配符和泛型中使用Object之间有什么区别
我正在阅读有关有效Java泛型的章节。
帮助我理解之间的区别Set,Set<?>以及Set<Object>?
以下段落摘自本书。
快速回顾一下,它
Set<Object>是表示可以包含任何类型的对象的集合的参数化类型,Set<?>是表示只能包含某些未知类型的对象的集合的通配符类型,并且Set是选择退出通用类型的原始类型系统。
什么是“某些未知类型”?是所有未知类型的类型Object吗?在这种情况下,Set<?>和之间的具体区别是Set<Object>什么?
回答:
- 原始类型(
Set)将类型视为完全 没有通用类型信息 。请注意,不仅会T忽略类型参数,而且还会忽略该类型方法可能具有的所有其他类型参数的微妙效果。您可以为其添加任何值,它将始终返回Object。 Set<Object>是Set,它接受所有Object对象(即 所有 对象),并将返回type的对象Object。Set<?>是Set,它接受 某些特定但未知 类型的所有对象,并将返回该类型的对象。由于对此类型 一无所知 ,因此您无法在该集合中 添加 任何内容(除外null),而您所知道的唯一有关其返回值的信息是它们是的子类型Object。
以上是 原始类型,无限制通配符和泛型中使用Object之间有什么区别 的全部内容, 来源链接: utcz.com/qa/407664.html
