剛剛學到了反射,感覺反射的功能好強大,所以想寫篇博客記錄下自己的學習成果。
利用反射來創建對象。

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