class Student{
private String name;
private int age;
public void say(String name,int age) {
System.out.println(name+age);
}
}
//反射对象获取属性
public class Test1 {
public static void main(String[] args) throws Exception, SecurityException {
Class clazz = Student.class;
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Student student = (Student)clazz.newInstance();
field.set(student, "牛牛昕");
System.out.println(field.get(student));
}
}
//反射对象获取方法
public class Test2 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
Class clazz = Student.class;
Method method = clazz.getMethod("say", String.class,int.class);
method.invoke(clazz.newInstance(), "牛牛昕",18);
}
}
获取反射对象的三种方式:
Class class1 = Person.class;
Class class2 = new Person().getClass();
Class class3 = Class.forName("com.qf.d_reflect.Person");