java 如何查看类型
查看变量类型的方法
在Java中,可以通过以下方式查看变量或对象的类型:
使用 getClass() 方法
适用于对象实例,返回对象的运行时类。
示例代码:
String str = "Hello";
System.out.println(str.getClass()); // 输出 class java.lang.String
使用 instanceof 运算符
检查对象是否为特定类的实例,返回布尔值。
示例代码:
Object obj = "Test";
System.out.println(obj instanceof String); // 输出 true
通过反射获取类型信息
适用于需要动态获取类信息的场景。
示例代码:

Class<?> clazz = str.getClass();
System.out.println(clazz.getName()); // 输出 java.lang.String
查看基本数据类型
基本数据类型(如 int、double)没有 getClass() 方法,需通过包装类或直接声明判断:
包装类转换法
将基本类型转为包装类后调用 getClass()。
示例代码:
int num = 42;
Integer boxedNum = num;
System.out.println(boxedNum.getClass()); // 输出 class java.lang.Integer
泛型类型擦除问题
由于Java泛型在编译时擦除类型,运行时无法直接获取泛型参数类型。可通过以下方式间接处理:

通过方法参数保留泛型信息
示例代码:
public <T> void printType(T item) {
System.out.println(item.getClass());
}
printType("Generic"); // 输出 class java.lang.String
使用 Class<T> 参数传递类型
示例代码:
public <T> void checkType(Class<T> type, T item) {
System.out.println(type.isInstance(item));
}
checkType(String.class, "Check"); // 输出 true
数组类型处理
数组类型可通过 getClass() 或反射获取:
示例代码:
int[] arr = {1, 2, 3};
System.out.println(arr.getClass()); // 输出 class [I
System.out.println(arr.getClass().getComponentType()); // 输出 int
以上方法覆盖了从基本类型到复杂对象的类型检查需求,可根据具体场景选择合适的方式。






