java中的反射,知道類名建立類,還可以設定私人屬性的值,java私人

來源:互聯網
上載者:User

java中的反射,知道類名建立類,還可以設定私人屬性的值,java私人

剛剛學到了反射,感覺反射的功能好強大,所以想寫篇部落格記錄下自己的學習成果。

利用反射來建立對象。

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;    }}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.