原始类型,无限制通配符和泛型中使用Object之间有什么区别

发布于 2021-01-31 15:28:46

我正在阅读有关有效Java泛型的章节。

帮助我理解之间的区别SetSet<?>以及Set<Object>

以下段落摘自本书。

快速回顾一下,它Set<Object>是表示可以包含任何类型的对象的集合的参数化类型,Set<?>是表示只能包含某些未知类型的对象的集合的通配符类型,并且Set是选择退出通用类型的原始类型系统。

什么是“某些未知类型”?是所有未知类型的类型Object吗?在这种情况下,Set<?>和之间的具体区别是Set<Object>什么?

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。
    • 原始类型(Set)将类型视为完全 没有通用类型信息 。请注意,不仅会T忽略类型参数,而且还会忽略该类型方法可能具有的所有其他类型参数的微妙效果。您可以为其添加任何值,它将始终返回Object
    • Set<Object>Set,它接受所有Object对象(即 所有 对象),并将返回type的对象Object
    • Set<?>Set,它接受 某些特定但未知 类型的所有对象,并将返回该类型的对象。由于对此类型 一无所知 ,因此您无法在该集合中 添加 任何内容(除外null),而您所知道的唯一有关其返回值的信息是它们是的子类型Object


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看