gpt4 book ai didi

java - Java 泛型中的问号

转载 作者:搜寻专家 更新时间:2023-11-01 03:01:09 25 4
gpt4 key购买 nike

我读过 <?><? extends Object> 完全相同.那么有什么区别呢:

  1. Set<?>
  2. Set<Object>
  3. Set

我试过添加 String.classMyClass.class进入所有这些集合,但在第二种情况下它无法编译。

另一个我不明白的例子是:

  1. Set<Class>
  2. Set<Class<?>>

对我来说它们似乎是相同的,但如果我有一个返回 Set<Class<?>> 的方法,我无法将它的返回值分配给 Set<Class> 类型的变量.

很抱歉,如果这是重复的,但我已经阅读了所有其他帖子,并且示例很少,我仍然无法理解。

最佳答案

Set<?> ,我可以使用任何我想要的类型:Set<?> s =new HashSet<Intger>()Set<?> s =new HashSet<String>() .因为,我可以制作?引用任何我不允许放置除null以外的任何东西在 Collection 中,我会得到 Object不在集合中。

Set<Object>说我只能分配类型 Object例如:Set<Object> s =new HashSet<Object>()但不是 Set<Object> s =new HashSet<String>() .在这种情况下,我可以添加任何类型,因为 Object是 super 基本类型,但我会得到 Object不在集合中。

Set是基本的原始类型,你可以添加任何东西并得到一个 Object打出来。

Set<Class>不同于 Set<Class<?>> .第一个说“我是一组非特定的 Class 类型”,而第二个说“我是一组特定的 Class 类型,但不知道是哪一个”。

关于java - Java 泛型中的问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com