首页 > 学院 > 开发设计 > 正文

java中的反射,知道类名创建类,还可以设置私有属性的值

2019-11-14 15:00:22
字体:
来源:转载
供稿:网友

刚刚学到了反射,感觉反射的功能好强大,所以想写篇博客记录下自己的学习成果。

利用反射来创建对象。

Class c1=Class.forName("test.Person");//通过类名来创建类,这里test.person只是一个类名,。这个person类代码在//本文最下方/***情况1:调用无参的构造方法来创建对象*/Person p=c1.newInstance();//这样就创建好了/***情况2:调用有参构造方法*/Constructor cs=c1.getConstructor(String.class,int.class);//括号里面写的是构造方法的参数类型的类化,也就是后面加.class就好了Person p=(Person) cs.newInstance("张三",22);//调用构造方法生成对象
View Code

利用反射来设置私有属性

    try {    Class clazz=Class.forName("testPerson");    Person p=(Person) clazz.newInstance();    Field f1=clazz.getDeclaredField("name");    f1.setaccessible(true);//设置是否可以操作私有属性    f1.set(p, "wfadf"); System.out.PRintln(f1.get(p));    } catch (Exception e) {        // TODO Auto-generated catch block        throw new RuntimeException(e);    }

Person类代码

package test;public class Person {    private String name;    private int age;        public Person() {            }    public Person(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;    }}

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表