【反射】Reflect的使用

来源:互联网 发布:java编写九九乘法表 编辑:程序博客网 时间:2024/06/01 09:10

ReflectTest类:

import java.lang.reflect.Field;import java.lang.reflect.Method;public class ReflectTest {public static void main(String[] args) throws InstantiationException, IllegalAccessException {/* * 1.获得要操作的类的对象 */Class c = Person.class;System.out.println(c);/* * 2.调用相应的getXXX()方法获取列表 */Field [] fields = c.getDeclaredFields();for(Object o : fields){System.out.println(o);}/* * 3.使用反射的API来操作这些信息 */System.out.println("---------使用反射前---------------------"); //创建对象时,有两种方法 Person p = (Person)c.newInstance();Person p2 = new Person();//输出信息System.out.println("name:" + p.getName() + " age:" + p.getAge());System.out.println("---------使用反射后---------------------");//分别对属性name和age进行设置,在设置时要注意setAccessible(true)fields[0].setAccessible(true);fields[0].set(p,"tom");fields[1].setAccessible(true);fields[1].set(p, 29);System.out.println("name:" + p.getName() + " age:" + p.getAge());//获取对象的方法Method[] method = c.getDeclaredMethods();for(Object o : method){System.out.println(o);}}}

Perosn类: 

public class Person {private String name;private int 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;}}


原创粉丝点击