Class<?> 和 Class<T> 在 Java 中都表示 Class 类型的对象,但它们的使用方式和作用略有不同。让我们详细分析它们的区别:
1. Class<?>(通配符 Class 类型)
-
?代表一个未知类型(Wildcard)。 -
Class<?>表示任何类型的 Class 对象,但不限定具体类型。 -
适用于泛型方法或需要处理不同类型 Class 的情况。
-
不能直接用于创建该类型的实例(因为
?代表不确定的类型)。 -
public void printClassInfo(Class<?> clazz) { System.out.println("Class name: " + clazz.getName()); } printClassInfo(String.class); // 输出: java.lang.String printClassInfo(Integer.class); // 输出: java.lang.Integer2.
Class<T>(泛型 Class 类型) -
T是一个具体的泛型类型,代表某个确定的类型。 -
Class<T>主要用于 泛型方法或类,确保类型安全。 -
允许
T作为类型参数,用于创建实例等操作。 -
public class InstanceCreator { public static <T> T createInstance(Class<T> clazz) throws Exception { return clazz.getDeclaredConstructor().newInstance(); } } String str = InstanceCreator.createInstance(String.class); System.out.println(str); // 输出: 空字符串 ""✅ 这里
Class<T>允许我们传递一个Class<String>,并确保createInstance方法返回的是String类型。 -
3.
Class<?>vsClass<T>对比对比项 Class<?>Class<T>含义 任何类型的 Class对象确定类型 T的Class对象泛型支持 不能确定类型,只能作为参数传递 允许创建 T类型的实例类型安全 不安全,只能操作 Object安全,可限定 T的类型实例化 ❌ 不支持 newInstance()✅ 支持 newInstance()












![[王阳明代数讲义]具身智能才气等级分评价排位系统领域投射模型讲义](https://i-blog.csdnimg.cn/direct/5593a120ff514d058e96f601782d6d1c.jpeg#pic_center)






