剛剛學到了反射,感覺反射的功能好強大,所以想寫篇博客記錄下自己的學習成果。
利用反射來創建對象。
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);//調用構造方法生成對象利用反射來設置私有屬性
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; }}
新聞熱點
疑難解答