Java中的Type接口和Class类有什么区别

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

猜你喜欢

转载自blog.csdn.net/linghuainian/article/details/86137810