Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是<&燃气轮机;意思是_Java_Generics - Fatal编程技术网

Java 什么是<&燃气轮机;意思是

Java 什么是<&燃气轮机;意思是,java,generics,Java,Generics,我使用以下代码创建了一个泛型类 public class MyBean<E> { } 公共类MyBean{ } 要创建该类的对象,我可以使用: MyBean<String> m1 = new MyBean<String>();// valid --------------------statement 1 MyBean<?> m1 = new MyBean<String>(); // valid -----------------

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

public class MyBean<E> {

}
公共类MyBean{
}
要创建该类的对象,我可以使用:

MyBean<String> m1 = new MyBean<String>();// valid --------------------statement 1
MyBean<?> m1 = new MyBean<String>(); // valid --------------------statement 2
MyBean m1=newmybean();//有效------------------报表1
MyBean m1=新的MyBean();//有效------------------报表2
但是,当我尝试使用以下方法创建对象时,出现了一个错误:

MyBean<?> m1 = new MyBean<?>();// invalid but why? --------------------statement 3
MyBean m1=newmybean();//但是为什么呢--------------------报表3
为什么语句2有效而语句3无效。

的基本含义是什么,“?”表示未知。在语句2中,您确实知道/声明(当您初始化时)集合将包含什么类型的元素,即字符串。但是在第三条声明中你什么都不知道所以

此链接肯定会有帮助:


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

MyBean是一个MyBean,您不关心它的类型是什么。MyBean也是一个MyBean,就像String也是一个对象一样。因此,将任何MyBean分配给MyBean都是有效的。

MyBean
意味着“一个由特定类型参数化的MyBean,但我不知道是哪一个。由于“我不知道是哪一个”,它在类型声明中有意义,但在实例化中没有意义。您无法创建”某些东西,但我不知道是什么“

是泛型的通配符。它通常与
extends
super
或两者一起使用,这意味着泛型应用于的方法/类扩展了另一个对象,或者是另一个对象的父类。第三条语句是无效的,因为您说您想用未知类型实例化MyBean——在某个时候您需要绑定泛型。这就像试图用and接口实例化一个接口

如果你想了解更多关于泛型的知识,我认为这本书是一本很好的参考书:

它被称为“通配符”。它是,以及在。请在这里发布之前至少做一些研究。