java 如何判断类型
判断基本数据类型
使用 instanceof 关键字判断对象是否为某个类的实例。适用于包装类或自定义类。
Integer num = 10;
if (num instanceof Integer) {
System.out.println("num 是 Integer 类型");
}
获取对象的 Class 对象
通过 getClass() 方法或 .class 语法获取 Class 对象,用于精确判断类型。
String str = "Hello";
Class<?> strClass = str.getClass();
if (strClass == String.class) {
System.out.println("str 是 String 类型");
}
判断基本类型的包装类
利用 Class.isPrimitive() 判断是否为基本类型(如 int、boolean 等),但需注意包装类(如 Integer)不适用。
Class<?> intClass = int.class;
if (intClass.isPrimitive()) {
System.out.println("int 是基本类型");
}
使用反射检查泛型类型
通过 Type 和 ParameterizedType 获取泛型的具体类型信息。
List<String> list = new ArrayList<>();
Type type = list.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
Type[] actualTypes = ((ParameterizedType) type).getActualTypeArguments();
System.out.println("泛型类型: " + actualTypes[0]);
}
处理数组类型
通过 Class.isArray() 判断是否为数组,并通过 getComponentType() 获取元素类型。
int[] arr = {1, 2, 3};
if (arr.getClass().isArray()) {
Class<?> componentType = arr.getClass().getComponentType();
System.out.println("数组元素类型: " + componentType.getName());
}
注意事项
instanceof不适用于基本数据类型(如int、double),仅用于对象。- 直接比较
Class对象时,注意区分基本类型和包装类(如int.class与Integer.class不同)。 - 反射操作可能影响性能,需谨慎使用。







