class 表示未知具体类型的 class 对象,强调可代表任意运行时类但不承诺类型安全;class 则仅指 object 类本身,二者语义不同且不可互换。

因为 `Class>` 表示“未知类型的 Class 对象”,不是泛型擦除或写错,而是 Java 类型系统有意设计的通配符用法 —— 它强调“这个 Class 对象能代表任意运行时类”,但**不承诺具体类型安全**,也不等价于 `Class
为什么不用 `Class
`Class
- `Class
c = String.class;` ❌ 编译失败 —— `String.class` 不是 `Class ` - `Class> c = String.class;` ✅ 合法 —— `?` 表示“某个确定但未知的具体类型”
`?` 是类型占位符,不是“任意对象”
`Class>` 中的 `?` 叫无界通配符(unbounded wildcard),它不代表 `Object`,而是表示“此处有一个具体的、但编译期未知的类型 T,`Class
- `Class> c1 = ArrayList.class;` → 实际是 `Class
` - `Class> c2 = Integer.class;` → 实际是 `Class
` - 它们共享 `Class>` 这一上界,便于统一处理,但彼此不可赋值互换
和 `Class` 的关键区别
假设你写 `Class
补充:`Class` 本身是原始类型,`>` 是为兼容泛型加的
Java 的 `Class` 类早在泛型出现前就存在。引入泛型后,为保持向后兼容并增强类型提示,把 `Class` 改为带类型参数的 `Class
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











