Java 获取泛型类名
时间: 2024-04-08 20:09:39 浏览: 105
在 Java 中,获取泛型类名可以使用反射机制中的 Type 类。下面是一个示例代码:
```java
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Demo<T> {
public String getTypeName() {
Type t = getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) t;
Type[] types = pt.getActualTypeArguments();
return types[0].getTypeName();
}
}
// 使用示例
class Main {
public static void main(String[] args) {
Demo<String> demo = new Demo<String>(){};
System.out.println(demo.getTypeName()); // 输出 java.lang.String
}
}
```
在 `getTypeName()` 方法中,首先使用 `getClass().getGenericSuperclass()` 获取当前类的带有泛型信息的父类,然后将其强制转换为 `ParameterizedType` 类型。接着,使用 `getActualTypeArguments()` 方法获取泛型类型参数数组,最后返回第一个泛型类型参数的类名。注意,在上面的示例中,我们使用了匿名内部类来创建 `Demo` 的实例,这是因为只有这样才能获取到带有泛型信息的父类。
阅读全文