Class和Class<?>声明有什么区别。
Class
Class<?>
Class a;
Class<?> b;
与所有通用类型和原始类型相同:
Class // An unknown class (raw type) Class<?> // An unknown class (generic version) Class<String> // The String class
在这种特殊情况下,Class和之间没有太大的实际区别,Class<?>因为它们都表示未知的类。根据现有的声明,编译器可以要求使用通用类型而不是原始类型。
但是: 从Java 1.5开始,您应该尽可能使用通用形式。Class<?>明确指出您的意思是“未知的班级”,Class<String>明确指出您的意思是该String班级。原始Class可能意味着 两者 。
Class<String>
String
最后,它对编译器没有太大的影响,但是在使代码的意图更易于理解和可维护方面却产生了巨大的不同。