11.10 如何在Java中使用Class <T>?| Java Debug 笔记

128 阅读1分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>

提问:如何在Java中使用Class <T>? 在这个问题上,对泛型及其背后的作用进行了很好的讨论,因此我们都知道Vector <int []>是整数数组的向量,而HashTable <String,Person>是其键表 是字符串和值Persons。 但是,让我感到困扰的是Class <>的用法。

Java类Class应该也具有一个模板名称,(或者因此,Eclipse中的黄色下划线告诉我)。 我不明白该放什么。 当您没有完全了解有关对象的信息(例如进行反射等)时,Class对象的全部要点就是。 为什么让我指定Class对象将容纳哪个类? 我显然不知道,或者知道了我就不会使用Class对象,而是使用特定的对象。

回答1:

我们所知道的是“任何类的所有实例共享该类类型的相同java.lang.Class对象”

Student a = new Student();
Student b = new Student();

有a.getClass() == b.getClass() 的结果是 true.

现在有 Teacher t = new Teacher();

// 在不存在泛型的情况下,这个是可能的
Class studentClassRef = t.getClass();

public void printStudentClassInfo(Class studentClassRef){}可以被Teacher.class调用?

使用泛型可以避免这种情况。

Class<Student> studentClassRef = t.getClass(); //编译错误

T只是一个符号,就像在编写类文件时声明的变量名(可以是任何名称)一样。 在这之后,T将被替换为初始化期间有效的类名

因此,Class <T>表示特定类类型“ T”的类对象。