zoukankan      html  css  js  c++  java
  • java 27

    类Field: 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。

    A:获得类的成员变量 数组:

      1、getFields(公共类的)

      2、getDeclaredFields(所有类型的)

    B:获得类的单个成员变量:

      1、getField (公共类的)

      2、getDeclaredField (所有类型的)

      A.1:获得类的公共成员变量:

    1         //获取类的字节码文件对象    
    2         Class c = Class.forName("zl_Relfect_01.Person");
    3         
    4         //获得该对象的公共成员变量
    5         Field[] f = c.getFields();
    6         //遍历
    7         for(Field fie : f){
    8             System.out.println(fie);
    9         }

     

     A.2:获得类的所有成员变量:

    1         //获取类的字节码文件对象    
    2         Class c = Class.forName("zl_Relfect_01.Person");
    3       //获取该类的所有成员变量
    4         Field[] f = c.getDeclaredFields();
    5         for(Field fie : f){
    6             System.out.println(fie);
    7         }    

     B.1:获得单个公共成员变量:

    1         //获取类的字节码文件对象    
    2         Class c = Class.forName("zl_Relfect_01.Person");
    3         //获取单个公共的成员变量
    4         Field f = c.getField("address");
    5         System.out.println(f);

     B.2:获得单个所有类型的成员变量:

    1         //获取类的字节码文件对象    
    2         Class c = Class.forName("zl_Relfect_01.Person");
    3 //        获取单个成员变量(所有类型)
    4         Field f = c.getDeclaredField("name");
    5         System.out.println(f);

     通过反射获取成员变量并使用

     1      //获取类的字节码文件对象
     2         Class c = Class.forName("zl_Relfect_01.Person");    
     3         //通过无参构造创建对象
     4         Constructor con = c.getConstructor();
     5         Object obj = con.newInstance();
     6         
     7     
     8         //获取私有成员变量name,并对它进行赋值
     9         //首先获取私有成员变量name
    10         Field newname = c.getDeclaredField("name");
    11         //成员变量name是私有的,所以得先取消语言访问检查  public void setAccessible(boolean flag)
    12         newname.setAccessible(true);
    13         //set(Object obj,Object value):将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
    14         //给obj里面的newname赋值为张三
    15         newname.set(obj, "张三");
    16         System.out.println(obj);//Person [name=张三, age=0, address=null]
    17 
    18         
    19         //获取默认类型成员变量age,并对它进行赋值    
    20         //获取age变量,并赋值
    21         Field newage = c.getDeclaredField("age");
    22         //取消语言访问检查
    23         newage.setAccessible(true);
    24         //给age赋值
    25         newage.set(obj, 13);
    26         System.out.println(obj);
    27         
    28         
    29         //获取公共成员变量address,并对它赋值    
    30         //获取address对象,并赋值
    31         Field newaddress = c.getDeclaredField("address");
    32         newaddress.set(obj, "家乡");
    33         System.out.println(obj);
  • 相关阅读:
    Functional Programming Contest
    CodeChef--SEPT14小结
    Weekly 10 小结
    CSS中的 REM PX EM
    phoenegap3.5 采坑
    PPT插件 用js制作PPT
    js 代码命名规范系列
    文档列表
    mockjax MOCK.js的拦截ajax请求
    css Tab选项卡
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5966203.html
Copyright © 2011-2022 走看看