Java 反射如何获得类的信息
小于 1 分钟
Java 反射如何获得类的信息
// 获得类的信息
public class Test02 {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException {
Class c1 = Class.forName("reflectionStudy.User");
/*
获得类的名字
*/
System.out.println(c1.getName()); // 获得包名 + 类名
System.out.println(c1.getSimpleName()); // 获得类名
/*
获得类的属性
*/
System.out.println("=============");
Field[] fields = c1.getFields(); // 只能找到public属性
// for (Field field : fields) {
// System.out.println(field);
// }
fields = c1.getDeclaredFields(); // 能找到全部属性
for (Field field : fields) {
System.out.println(field);
}
/*
获得指定属性的值
*/
Field name = c1.getDeclaredField("name");
System.out.println(name);
/*
获得类的方法
*/
System.out.println("=============");
Method[] methods = c1.getMethods(); // 获得本类及其父类的全部public方法
for (Method method : methods) {
System.out.println("正常的:"+method);
}
methods = c1.getDeclaredMethods(); // 获得本类的全部方法
for (Method method : methods) {
System.out.println("getDeclaredMethods:"+method);
}
/*
获取指定方法
*/
Method getName = c1.getMethod("getName",null);
Method setName = c1.getMethod("setName",String.class);
System.out.println(getName);
System.out.println(setName);
/*
获取指定的构造器
*/
System.out.println("==========");
Constructor[] constructors = c1.getConstructors(); // 获得public方法
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
constructors = c1.getDeclaredConstructors(); // 获得全部方法
for (Constructor constructor : constructors) {
System.out.println(constructor);
}
}
}