Type是Class的父接口。
Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
这里举个当Type是参数化类型的例子:
public class B<T,K> {
}
package test;
public class Book extends B<String,Integer>{
}
import test.B;
import test.Book;
import java.lang.reflect.Type;
public class Main {
public static void main(String[] args) {
Book book=new Book();
Class cbook=book.getClass();
//获取Book类的直接超类的Type
Type type=cbook.getGenericSuperclass();
Class cb=new B().getClass();
System.out.println(type);
System.out.println(cb);
}
}
运行结果:
test.B<java.lang.String, java.lang.Integer>
class test.B
可以看出,Type可以表示出泛型的类型,而Class不能。
另外,如果想要获取泛型类型的数组,可以将Type转化为它的子接口ParameterizedType,通过getActualTypeArguments()
获取:
Type[] paramList=((ParameterizedType)type).getActualTypeArguments();
System.out.println(paramList[0]+" "+paramList[1]);
运行结果:
class java.lang.String class java.lang.Integer