版权声明:如需转载请标明出处 https://blog.csdn.net/yj201711/article/details/84983239
获取类的信息
- 获取构造方法
- 获取public属性
- 获取public 方法
- 获取该类的私有的属性和方法:getDeclaredField()/getDeclaredMethod()
- 获取该类的父类
- 获取该类实现的接口
package org.lanqiao.reflect.demo;
import java.io.Serializable;
public class Student implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
private void show() {
System.out.println("show 。。。。");
}
}
package org.lanqiao.reflect.demo;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class GetClassInfo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
// 1
Student stu = new Student();
stu.setName("张三");
stu.setAge(22);
Class<?> clazz1 = stu.getClass();
//2
Class<?> clazz2 = Student.class;
//3
Class<?> clazz3 = Class.forName("org.lanqiao.reflect.demo.Student");
// 获取所有属性
Field[] fs = clazz3.getFields();
for(Field f : fs) {
System.out.println(f);
}
//获取特定的属性
/*Field f = clazz3.getField("name");//获取某一个属性
System.out.println(f.get(stu));//通过Field对象的get(Object obj)方法 获取某一个对象的该属性的值
f.set(stu, "李四");//修改stu的name属性的值为李四
System.out.println(f.get(stu));*/
//获取私有的属性和方法
//获取所有的私有的属性
Field[] fds = clazz3.getDeclaredFields();
for(Field fd : fds) {
System.out.println(fd);
}
//获取特定的私有的属性
Field fd = clazz3.getDeclaredField("name");
//获取该私有属性的值
//System.out.println(fd.get(stu));
//获取私有的方法
Method m = clazz3.getDeclaredMethod("show");
//m.invoke(stu);
Class sc = clazz3.getSuperclass();
System.out.println(sc);
Class[] carray = clazz3.getInterfaces();
for(Class ca :carray) {
System.out.println(ca);
}
}
}