回答
Class
是一个可参数化的类,因此您可以使用语法Class<T>
其中T是一个类型。通过编写Class<?>
,您宣布可以为任何类型的Class
对象(?
是通配符)。 Class
类型是一种包含有关类的元信息的类型。
通过使用Class<?>
来指定他的特定类型来引用泛型,这是很好的习惯(你知道Class
是可参数化的),但是你不限制你的参数一个特定的类型。
参考关于泛型和通配符:http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html
参考关于类对象和反射(Java语言用来内省本身的功能):http://java.sun.com/developer/technicalArticles/ALT/Reflection/
这样做只是简单地使用没有类型的'Class'有什么好处?他们似乎代表了同样的事情。 – ashes999 2013-06-22 14:47:59
我认为一个通用的整个观点是你不知道类的前面。否则,您只需定义一个函数来为参数使用特定的类类型。这个问号仍然没有意义。 – Brain2000 2015-03-06 17:48:55
除了告诉编译器“我知道这是一个泛型类,但我不知道或关心实际类型,所以没有其他好处,所以不是给出一个具体的类型,而是给出'? “通配符”。如果你没有给出通配符,编译器就会假设你忘记了类型,或者不知道这个类是通用的,并且会警告你。 – Kayaman 2016-02-29 07:51:10
这是一个generics文字。这意味着你不知道这个Class
实例代表的类的类型,但是你仍然在使用通用版本。
- 如果你知道这个班级,你会使用
Class<Foo>
。这样,你可以创建一个新的实例,例如,无铸造:Foo foo = clazz.newInstance();
- ,如果你不使用泛型可言,你会得到至少(而不是使用泛型一般不提倡,因为它可能导致一个警告难以察觉的副作用)
这意味着一类与任何类型的东西(未知)。
你应该阅读Java泛型教程去更好地理解它
这意味着你的类的引用可以容纳任何类对象的引用。
它基本上是一样的“类”,但你展示其他人谁看了你的代码,你没有忘记泛型,你只是想,可以容纳任何类对象的引用。
Bruce Eckel着在Java编程思想:
在Java SE5,类<>优于普通班,即使他们 是等价的,普通类,就像你看到的,不会产生?一个 编译器警告。 <类的好处?>是它 表明你不只是使用,或出于无知由 事故非特异性类引用。您选择了非特定版本。
报价说“类>优于普通类”和“The类别>的好处“。看起来,blockquote与尖括号不一致。 – MasterF 2012-03-29 17:13:28
它需要被转义。现在就修正它:P – 2016-02-29 07:08:52
在泛型,一个未知的类型由通配符表示“?”。官方示例,请阅读here。
这<?>
是一个野兽。它通常会导致混淆和错误,因为当你首先看到它时,那么你开始相信,<?>
是的任何java类型的通配符。这是......不正确。 <?>
是未知类型,有轻微和讨厌的区别。
与Class
一起使用时没有问题。两条线工作,并编译:
Class anyType = String.class;
Class <?> theUnknownType = String.class;
但 - 如果我们开始使用它与集合,然后我们看到了奇怪的编译时错误:
List<?> list = new ArrayList<Object>(); // ArrayList<?> is not allowed
list.add("a String"); // doesn't compile ...
我们List<?>
是不是一个集合,适合于只是任何类型的对象。它只能存储一种类型:神秘的“未知类型”。当然,这不是真正的类型。
- 1. Class <something>在Java中有什么含义?
- 2. Class clazz和Class <?> clazz在java中有什么区别?
- 3. Map <?, ?>在Java中有什么含义?
- 4. 什么是<T>(尖括号)在Java中的含义?
- 5. <X>在java方法声明中的含义是什么?
- 6. Ruby中'<==>'的含义是什么?
- 7. <class'super'> class在python中做什么?
- 8. 什么“ - >”在Java中的含义
- 9. <%= @something%>在Java属性文件中的含义是什么?
- 10. <?> Android中的含义是什么?
- 11. 什么是<class> in load_obj.AddComponent <Class>();?
- 12. Java中<?>标记的含义是什么?
- 13. Puppet Exec是什么“<| |>”的含义?
- 14. /*.php$在robots.txt中的含义是什么?</p> <pre><code>User-agent: * Disallow: /*.php$ </code></pre> <p>那么它有什么作用:
- 15. * <Class_Name> * <variable_name>中的含义是什么?
- 16. “class declaration head”的语法含义是什么?{val_name:Type =>`class body`}“
- 17. Java中此语法形式<?>的含义是什么?
- 18. SYSTEM在<<DOCTYPE people SYSTEM“peopleDTD.dtd”>``中的含义是什么?
- 19. **在Java中有什么含义?
- 20. 这是什么标签的含义:<t> Lorem存有</t>
- 21. 什么是Try <String>在Groovy中的含义
- 22. <>在类名中的含义是什么?
- 23. <?>在Java中代表什么?
- 24. <namespace> :: class是什么意思?
- 25. 什么<a href="#" class="view"> mean?
- 26. 什么是名单<T> Class?
- 27. 为什么<hr class =“hidden”/>?
- 28. class myClass <String>是什么意思?
- 29. 在Java中什么是< >符号
- 30. 在java中代表<< or > >>是什么意思?
http://en.wikipedia.org/wiki/Wildcard_%28Java%29 – Anycorn 2012-03-29 08:27:24
http://stackoverflow.com/q/2024513/1140748 – 2012-03-29 08:31:22