在Java中,Class
类是反射(Reflection)API的一部分,用于表示或封装一个类或接口的基本信息。
当你有一行代码像这样:
Class clazz = Person.class;
这里发生的是:你创建了一个 Class
类型的对象 clazz
,并把 Person
类的 "类型"(或说元信息、metadata)赋值给它。
这样做有什么用呢?
动态创建对象:通过 clazz
对象,你可以动态地创建 Person
类的对象。
Person person = (Person) clazz.newInstance();
获取元信息:你可以获取类的名称、父类、实现的接口、构造器、方法等信息。
Method[] methods = clazz.getMethods();
动态调用方法和属性:通过反射,你可以动态地调用一个对象的方法和访问其属性,即使你在编译时并不知道这些方法和属性。
Method method = clazz.getMethod("someMethod", String.class);
method.invoke(person, "someParameter");
类型检查:你可以用它来做一些运行时的类型检查。
if (someObject instanceof Person) {
// Do something
}
// Or
if (clazz.isInstance(someObject)) {
// Do something
}
需要注意的是,反射通常用于高级编程和工具开发,它会破坏一些Java语言的安全性和封装性。因此,在普通应用开发中,它并不经常被使用。
总结,`clazz
`是一个持有` Person
`类元信息的` Class
`对象,通过它你可以进行很多动态操作。