java中自带的TypeReference
时间: 2023-10-12 22:12:20 浏览: 75
Java功底之Reference
Java中的TypeReference是一个抽象类,它可以帮助我们在运行时获取泛型类型的信息。通过继承TypeReference,我们可以创建一个具有泛型类型的子类,并在子类中实现TypeReference的抽象方法,从而获取泛型类型的信息。
例如,我们可以创建一个名为MyTypeReference的子类,该子类具有一个泛型类型T,并实现TypeReference的抽象方法getType(),以获取T的类型信息。以下是一个示例代码:
```
public abstract class MyTypeReference<T> extends TypeReference<T> {
public Type getType() {
Type superClass = getClass().getGenericSuperclass();
Type type = ((ParameterizedType) superClass).getActualTypeArguments()[0];
return type;
}
}
```
然后我们可以创建一个使用MyTypeReference的类,并在该类中使用MyTypeReference来获取泛型类型的信息,例如:
```
public class MyGenericClass<T> {
private Class<T> clazz;
public MyGenericClass() {
clazz = (Class<T>) new MyTypeReference<T>() {}.getType();
}
public Class<T> getClazz() {
return clazz;
}
}
```
在上述代码中,我们创建了一个MyGenericClass类,该类具有一个泛型类型T。在MyGenericClass的构造函数中,我们使用MyTypeReference来获取T的类型信息,并将其保存在clazz变量中。然后我们可以在MyGenericClass中使用clazz来获取T的Class对象,例如:
```
MyGenericClass<String> myGenericClass = new MyGenericClass<>();
Class<String> clazz = myGenericClass.getClazz();
```
通过这种方式,我们可以在运行时获取泛型类型的信息,从而更好地处理泛型类型的数据。
阅读全文