T-此Class对象建模的类的类型。例如,String.class的类型为
Class<String>
。如果要建模的类未知,请使用Class<?>
。
“由此Class对象建模的类的类型”到底是什么意思?请原谅,但这对我来说似乎很奇怪,我听不懂。
答案 0 :(得分:3)
您可能知道,类表示(换句话说,是 model )事物。 String
代表一堆字符,FileInputStream
代表文件输入流,LocalDateTime
代表不带时区的日期和时间,等等。
如果您能够理解,那么您应该能够理解,有一个类代表“类”的概念,称为Class
。此类是通用的。 它的单个通用参数是它代表的类。例如,Class<String>
代表类String
,Class<LocalDateTime>
代表类LocalDateTime
。这就是文档的含义。
让我们看一个具体的例子:
Class<String> clazz = String.class;
System.out.println(clazz.getName());
在第一行中,我检索了Class<String>
(或Class<String>
对象)的实例。现在,变量clazz
中的对象表示String
类!多么酷啊?我们可以通过在String
上调用getName
来打印clazz
类的名称,如第二行所示。您还可以使用clazz
做其他很酷的事情,例如查看它实现了什么接口,它的超类是什么,它具有什么方法等等。这就是我所说的“ Class<String>
对象代表String
类。
答案 1 :(得分:1)
T
类型参数是通用参数,请参见https://docs.oracle.com/javase/tutorial/java/generics/。对于Class<T>
,它是类的实例的类型。从javadoc中可以看到,此参数在几种方法中使用:
T newInstance()
,T cast()
,Constructor<T> constructor()
。
例如。您可以从T
对象实例化Class<T>
类型的新实例:
Class<String> cls = String.class;
String str = cls.newInstance();
或强制此类:
Object obj = "some string";
Class<String> cls = String.class;
String str = cls.cast(obj);