Java 反射机制[Field反射](转)

2017-06-07  本文已影响20人  愤怒的_菜鸟

FieldTest:

import java.lang.reflect.Field;

public class FieldTest {

// 對於formbean 已知其屬性名稱 實現動態的對該屬性設置值 並返回formbean的實例
public static void main(String args[]) throws Exception,
IllegalAccessException {

// 類反射
Class cls = Class.forName("FieldForm");
// 實例華該類
Object obj = cls.newInstance();

// 根據filed名稱取得field實例 假設filed名稱為a
Field fd = cls.getDeclaredField("a");
// 對該field進行附值
fd.set(obj, "aaaaa");

// ============== 經過以上操作后對象obj的a屬性就被赴值了
// 以下就可以從該對象中取得a屬性的值了

FieldForm frm = (FieldForm) obj;

System.out.print(frm.getA());

}

}

對應的formbean類:

public class FieldForm {
public String a;
public String b;
public String c;
public String d;
public String e;
public String f;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
public String getE() {
return e;
}
public void setE(String e) {
this.e = e;
}
public String getF() {
return f;
}
public void setF(String f) {
this.f = f;
}

}

对于bean中为private的属性取值方法:

public class Test{
private String str="csdn";
public void print(){
System.out.println(str);
}
}
//------------------------------------
import java.lang.reflect.Field;

public class ReflectionTest{

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException{
Test t=new Test();
t.print();
Field[] f=t.getClass().getDeclaredFields();

for(int i=0;i<f.length;i++)
{
f[i].setAccessible(true);
//System.out.println(f[i].getType());
f[i].set(t, "japan");
}
t.print();
}
}

上一篇 下一篇

猜你喜欢

热点阅读