"the type of the class modeled by this Class object"是什么意思?



来自Java文档:

T - 由 Class 对象建模的类的类型。例如,字符串.class的类型为Class<String>。如果正在建模的类未知,请使用Class<?>

"由此类对象建模的类的类型"究竟是什么意思?对不起,这对我来说看起来很奇怪,我无法理解那么多。

如您所知,类表示(换句话说,模型)事物。String表示一堆字符,FileInputStream表示文件输入流,LocalDateTime表示没有时区的日期和时间等。

如果你能理解这一点,那么你应该能够理解有一个类代表"类"的概念,叫做Class。此类是通用的。它的单个泛型参数是它所表示的类。例如,Class<String>表示类StringClass<LocalDateTime>表示类LocalDateTime。这就是文档的意思。

让我们看一个具体的例子:

Class<String> clazz = String.class;
System.out.println(clazz.getName());

在第一行中,我检索了Class<String>(或Class<String>对象的实例)。现在变量clazz中的对象表示String类!这有多酷?我们可以通过在clazz上调用getName来打印String类的名称,如您在第二行中看到的。你也可以用clazz做其他很酷的事情,比如看它实现了什么接口,它的超类是什么,它有什么方法,等等。这就是我所说的"Class<String>对象表示String类"的意思。

T类型参数是泛型参数,请参阅 https://docs.oracle.com/javase/tutorial/java/generics/。如果是Class<T>,它是类的实例类型。正如你从javadoc中看到的,这个参数用在几种方法中:T newInstance()T cast()Constructor<T> constructor()。 例如,您可以从Class<T>对象实例化T类型的新实例:

Class<String> cls = String.class;
String str = cls.newInstance();

或强制转换为此类:

Object obj = "some string";
Class<String> cls = String.class;
String str = cls.cast(obj);

相关内容

最新更新