在编写通用性框架的时候,最顶层的类中一般在编译时是无法获得具体的类型的,因此,我们要使用泛型,使应用程序在运行时获得泛型的具体类型。
具体实现如下:
最顶层的类:
public class BaseClass<T, M>
{
public Class<T> getEntityClass()
{
ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
Class<T> result = (Class<T>) (parameterizedType.getActualTypeArguments()[0]);// 0表示获得第一个泛型的具体类型
return result;
}
}
子类:
public class SubClass extends BaseClass<String, Integer>
{
}
测试:
public class Test
{
public static void main(String[] args)
{
SubClass base = new SubClass();
System.out.println(base.getEntityClass().getName());// 输出泛型的实际类型
}
}
本文介绍了一种通过泛型获取实际类型的Java实现方案。利用泛型特性,在运行时获取子类传递给父类的泛型参数具体类型。此方法适用于通用框架的设计。
1507

被折叠的 条评论
为什么被折叠?



