类对象是一种描述对象类的元对象。它主要与 Java 的反射功能一起使用。您可以将其视为实际课程的“蓝图”。例如。你有一个像这样的汽车类:
public class Car {
public String brand;
}
然后您可以构造一个描述您的“汽车”类的 Class 对象。
Class myCarClass = Class.forName("Car");
现在您可以对该 Class 对象上的 Car 类进行各种查询:
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
等等。每个 java 对象都有一个方法 getClass(),它返回描述 Java 对象的 Class 的 Class 对象。所以你可以这样做:
Car myCar = new Car();
Class myCarClass = myCar.getClass();
这也适用于你不知道的物体,例如你从外面得到的物体:
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
你可以给这个方法提供任何 java 对象,它会打印你给它的对象的实际类。
使用 Java 时,大多数时候您无需担心 Class 对象。不过,他们有一些方便的用例。例如。它们允许您以编程方式实例化某个类的对象,该类通常用于对象序列化和反序列化(例如,将 Java 对象来回转换为 XML 或 JSON)。
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance(); // is roughly equivalent to = new Car();
您还可以使用它来找出类的所有声明的字段或方法等,这在某些情况下非常有用。所以例如如果你的方法得到了一个未知的对象并且你需要了解更多关于它的信息,比如它是否实现了一些接口等,Class 类是你的朋友。
长话短说,java.lang.reflect 包中的 Class、Field、Method 等类允许您分析定义的类、方法、字段,创建它们的新实例,调用各种方法其他东西,它们允许您在运行时动态地执行此操作。