Dan*_*ski 41
它与所有通用和原始类型相同:
Class // An unknown class (raw type)
Class<?> // An unknown class (generic version)
Class<String> // The String class
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,它们之间没有太大的实际区别Class,Class<?>因为它们都表示一个未知的类.根据现有的声明,编译器可以要求泛型类型而不是原始类型.
但是:从Java 1.5开始,您应该尽可能使用通用表单.Class<?>明确指出你的意思是"一个未知的阶级",清楚地说明Class<String>你的意思是String班级.原始Class可能意味着两者.
最后,它对编译器没有多大影响,但它使得代码的意图更易于理解和维护,这会产生巨大的差异.