有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java“由该类对象建模的类的类型”是什么意思?

Java Documentation开始:

T - the type of the class modeled by this Class object. For example, the type of String.class is Class<String>. Use Class<?> if the class being modeled is unknown.

“由该类对象建模的类的类型”的确切含义是什么?对不起,这件事对我来说很奇怪,我不太明白


共 (2) 个答案

  1. # 1 楼答案

    您可能知道,类表示(换句话说,模型)事物。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做其他很酷的事情,比如看它实现了什么接口,它的超类是什么,它有什么方法等等。这就是我所说的“对象代表String

  2. # 2 楼答案

    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);