我有一段有效的代码,我想问一下究竟发生了什么?
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)
是等价的.
还有通用版
Class<?> normalClass = null;
Run Code Online (Sandbox Code Playgroud)
几乎等同于原始类型版本,
Class normalClass = null;
Run Code Online (Sandbox Code Playgroud)
主要区别在于后者将与不支持泛型的 Java 版本兼容,例如 Java 1.4。
| 归档时间: |
|
| 查看次数: |
17883 次 |
| 最近记录: |