文章标题

来源:互联网 发布:金融类电影 知乎 编辑:程序博客网 时间:2024/05/21 06:17

反射

package org.test.base;public class User {    private String name;    private Integer sex;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getSex() {        return sex;    }    public void setSex(Integer sex) {        this.sex = sex;    }    @Override    public String toString() {        return "User [name=" + name + ", sex=" + sex + "]";    }}
package org.test.base;import java.lang.reflect.Field;public class Hi {    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InstantiationException, ClassNotFoundException {        System.out.println(1);        User he = new User();//有实例对象的反射        Field[] fields_he = he.getClass().getDeclaredFields();        he.setName("zhang san");        for(Field field : fields_he){            field.setAccessible(true);//暴力反射,将private强制转换为public            System.out.println(field.getName()+" :"+field.get(he));        }        System.out.println(2);        User you = null;//无实例对象的反射        you = (User) Class.forName(User.class.getName()).newInstance();        you.setName("li si");        Field[] fields_you = you.getClass().getDeclaredFields();        for(Field field : fields_you){            field.setAccessible(true);            System.out.println(field.getName()+" :"+field.get(you));        }        System.out.println(3);        User she = null;//无实例对象的反射        she = (User) ClassLoader.getSystemClassLoader().loadClass(User.class.getName()).newInstance();        she.setName("wang wu");        Field[] fields_she = she.getClass().getDeclaredFields();        for(Field field : fields_she){            field.setAccessible(true);            System.out.println(field.getName()+" :"+field.get(she));        }       }}
输出结果:1name :zhang sansex :null2name :li sisex :null3name :wang wusex :null