Java类类型

pn1*_*ude 8 java generics

我有一段有效的代码,我想问一下究竟发生了什么?

Class<?> normalFormClass = null;
Run Code Online (Sandbox Code Playgroud)

- -添加 - -

通配符" <?>"是令我困惑的部分.为什么要使用它而不是使用它(泛型)?

Vin*_*vic 12

这意味着它可以是任何类型的类.?是表示所有类型集合的通配符,或"任何".所以你以后可以这样做

Integer normalForm = new Integer();
normalFormClass = normalForm.getClass();
Run Code Online (Sandbox Code Playgroud)

要么

String normalForm = new String();
normalFormClass = normalForm.getClass();
Run Code Online (Sandbox Code Playgroud)

如果您不了解Java上的泛型,请阅读http://java.sun.com/developer/technicalArticles/J2SE/generics/

至于为什么,我认为可能是严格表达你任何地方使用泛型,你的代码与旧的Java版本不兼容,或者可能关闭一些触发快乐的IDE.是的,

Class foo 
Run Code Online (Sandbox Code Playgroud)

Class<?> foo 
Run Code Online (Sandbox Code Playgroud)

是等价的.


Joh*_* MD 5

还有通用版

Class<?> normalClass = null;
Run Code Online (Sandbox Code Playgroud)

几乎等同于原始类型版本,

Class normalClass = null;
Run Code Online (Sandbox Code Playgroud)

主要区别在于后者将与不支持泛型的 Java 版本兼容,例如 Java 1.4。