分类:N07_Java
public class SomeClass {
private String name;
public SomeClass(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "SomeClass{name='" + name + "'}";
}
}
import java.lang.reflect.*;
public class ClassInfoExample {
public static void main(String[] args) {
// 获取 SomeClass 类的 Class 对象
Class<?> clazz = SomeClass.class;
// 获取类名
System.out.println("Class name: " + clazz.getName()); // 输出 "SomeClass"
// 获取类的构造方法
try {
Constructor<?> constructor = clazz.getConstructor(String.class);
System.out.println("Constructor: " + constructor);
// 创建类的实例
Object instance = constructor.newInstance("John");
System.out.println("Instance: " + instance); // 输出 "SomeClass{name='John'}"
} catch (Exception e) {
e.printStackTrace();
}
// 获取类的方法
try {
Method method = clazz.getMethod("getName");
System.out.println("Method: " + method);
// 调用方法
String result = (String) method.invoke(instance);
System.out.println("Result from method: " + result); // 输出 "John"
} catch (Exception e) {
e.printStackTrace();
}
// 获取类的字段
try {
Field field = clazz.getDeclaredField("name");
field.setAccessible(true); // 允许访问 private 字段
System.out.println("Field: " + field);
// 获取字段值
String fieldValue = (String) field.get(instance);
System.out.println("Field value: " + fieldValue); // 输出 "John"
} catch (Exception e) {
e.printStackTrace();
}
}
}