srcType instanceof Class
是什么
检查 srcType 是不是普通的类类型(不是泛型)
简单例子
java
// 普通类
String str = "hello";
Class<?> clazz = String.class;
boolean result = clazz instanceof Class; // true
java
// 泛型类型
List<String> list = new ArrayList<>();
Type type = list.getClass().getGenericSuperclass();
boolean result = type instanceof Class; // false(可能是ParameterizedType)
什么时候用
java
if (srcType instanceof Class) {
// 这是普通类,如 String、Integer
Class<?> clazz = (Class<?>) srcType;
} else {
// 这是泛型相关类型
}
一句话理解
判断类型是不是普通的类,不是泛型
泛型 vs 普通类
普通类
类型固定,直接使用
java
String str = "hello"; // 只能是String
Integer num = 123; // 只能是Integer
List list = new ArrayList(); // 可以放任何类型(不安全)
泛型类
类型可变,使用时确定
java
List<String> list1 = new ArrayList<>(); // 只能放String
List<Integer> list2 = new ArrayList<>(); // 只能放Integer
Box<String> box = new Box<>(); // T变成String
核心区别
| 特点 | 普通类 | 泛型类 |
|---|---|---|
| 类型 | 固定 | 可变 |
| 定义 | class Box { } |
class Box<T> { } |
| 使用 | new Box() |
new Box<String>() |
| 安全性 | 需要类型转换 | 编译时检查 |
一句话理解
普通类类型固定,泛型类类型灵活