首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><?>是什么意思?

<?>是什么意思?
EN

Stack Overflow用户
提问于 2012-01-05 08:34:04
回答 4查看 270关注 0票数 2

我使用以下代码创建了一个泛型类

代码语言:javascript
复制
public class MyBean<E> {

}

要创建该类的对象,我可以使用:

代码语言:javascript
复制
MyBean<String> m1 = new MyBean<String>();// valid --------------------statement 1
MyBean<?> m1 = new MyBean<String>(); // valid --------------------statement 2

但是,当我试图使用以下方法创建一个对象时,会出现一个错误:

代码语言:javascript
复制
MyBean<?> m1 = new MyBean<?>();// invalid but why? --------------------statement 3

为什么语句2有效,而语句3无效。<?> 的含义是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-01-05 08:41:26

MyBean<?>的意思是“由特定类型参数化的MyBean,但我不知道是哪种类型。因为”我不知道哪种类型“,所以在类型声明中它是有意义的,但在实例化中没有意义。您不能创建”东西,但我不知道是什么“。

票数 4
EN

Stack Overflow用户

发布于 2012-01-05 08:40:02

基本上,"?“意味着未知。在语句2中,您确实知道/声明(当您输入时)您的集合将包含什么样的元素(即字符串)。但在第三份声明中你什么都不知道所以..。

这个链接肯定会有帮助:

http://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html

票数 0
EN

Stack Overflow用户

发布于 2012-01-05 08:40:30

MyBean可以和E一样与任何类型一起使用,但是您必须提供该类型。MyBean向类型参数E提供字符串。MyBean根本不提供类型参数,因此这是一个错误。

MyBean是一个不关心类型是什么的MyBean。MyBean也是一个MyBean,就像字符串也是一个对象一样。因此,将任何MyBean<>分配给MyBean是可行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8739617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档