Class 对象
Class 对象代表了一个类或接口在运行时的信息,可以用来获取类的结构信息、访问类的属性和方法等。在Java中,每个类在运行时都有一个对应的
Class
对象,这个对象包含了关于类的各种信息,比如类的方法、字段、构造函数等。Class
类提供了许多方法来获取这些信息,使得在运行时能够动态地获取和操作类的成员。
获取Class对象的方式
通过类名获取:使用类名.class
Class<String> stringClass = String.class;
通过对象的 getClass 方法获取:对已有对象调用getClass()方法。
String str = "Hello"; Class<? extends String> strClass = str.getClass();
通过 Class 类的静态方法获取:使用 Class 类的静态方法forName(),传入类的完整路径。当调用 Class.forName(className) 时,它会尝试加载并返回名为
className
的类的 Class对象。try { Class<?> stringClass = Class.forName("java.lang.String"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
获取成员变量(Fields)
Field 对象代表了类的属性,可以用来读取和设置类的字段值。
Field getField(String name)
获取指定名称的公共(
public
)字段,包括从父类继承而来的公共字段。如果找不到指定名称的字段,会抛出
NoSuchFieldException
异常。
Field[] getFields()
获取所有公共字段,包括从父类继承而来的公共字段。
Field getDeclaredField(String name)
获取指定名称的字段,包括私有(
private
)字段,但不包括继承的字段。如果找不到指定名称的字段,会抛出
NoSuchFieldException
异常。
Field[] getDeclaredFields()
获取当前类声明的所有字段,包括私有字段,但不包括继承的字段。
案例
import java.lang.reflect.Field;
class MyClass {
public int publicField;
private String privateField;
public MyClass(int publicField, String privateField) {
this.publicField = publicField;
this.privateField = privateField;
}
public void print