源码
Type 接口的全路径是 java.lang.reflect.Type ,代码是:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package java.lang.reflect;
public interface Type {
default String getTypeName() {
return this.toString();
}
}
Class 类实现了该接口:
public String getTypeName() {
if (this.isArray()) { // 这段代码是为了获取数组的最细粒度类型
try {
Class<?> cl = this;
int dimensions = 0;
do {
++dimensions;
cl = cl.getComponentType();
} while(cl.isArray());
return cl.getName() + "[]".repeat(dimensions);
} catch (Throwable var3) {
}
}
return this.getName();
}
使用示例
@Test
public void test_Long() {
System.out.println(Long.class.getTypeName());
// 上面的代码输出 java.lang.Long
Long[] longArr = new Long[10];
System.out.println(longArr.getClass().getTypeName());
// 上面的代码输出 java.lang.Long[]
List<Long> longList = new ArrayList<>();
System.out.println(longList.getClass().getTypeName());
// 上面的代码输出 java.util.ArrayList
}