美文网首页
Java 反射机制[Field反射](转)

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

作者: 愤怒的_菜鸟 | 来源:发表于2017-06-07 14:59 被阅读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();
    }
    }

    相关文章

      网友评论

          本文标题:Java 反射机制[Field反射](转)

          本文链接:https://www.haomeiwen.com/subject/ihtafxtx.html