如果一个类实现了一个接口,如何获取接口中泛型的实际类型import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
class Head{
}
interface Animal{
}
class Dog implements Animal
{}
public class Test {
public static void main(String[] args){
Animal animal=new Dog();
Type genericInterface = animal.getClass().getGenericInterfaces()[0];
ParameterizedType genericInterface1 = (ParameterizedType) genericInterface;
Class cname=(Class)genericInterface1.getActualTypeArguments()[0];
System.out.println(cname);
// 打印 class com.weblogc.design.test.Head
}
}
获取class Dog implements Animal
Head的实际类型如果一个类继承了另一个类,如何获取继承类中泛型的实际类型import java.lang.reflect.ParameterizedType;class Money{
}
class Person{
}
class Man extends Person{
}
public class Test2 {
public static void main(String[] args){
Person man=new Man();
ParameterizedType parameterizedType=(ParameterizedType)man.getClass().getGenericSuperclass();
Class actualTypeArgument = (Class)parameterizedType.getActualTypeArguments()[0];
System.out.println(actualTypeArgument);
// 打印 class com.weblogc.design.test.Money
}
}
获取class Man extends Person Money的实际类型
搞明白这两个知识点 对一些框架设计,以及架构很有帮助。