zoukankan      html  css  js  c++  java
  • 【译】4. Java反射——字段

    原文地址:http://tutorials.jenkov.com/java-reflection/fields.html

     ========================================================================================

         使用java反射,你可以在运行时检查类的字段(成员变量)并且get/set它们的值。这些是通过Java类java.lang.reflect.Field做的。本文将会给出更详细的关于Field对象的信息。请记住也去查阅Sun的JavaDoc。下面是主题列表:

    1. Obtaining Field Objects (获取Field对象)
    2. Field Name (字段名)
    3. Field Type (字段类型)
    4. Getting and Setting Field Values (get/set字段的值)

     ========================================================================================

    • Obtaining Field Objects 

         从Class对象中获取Field对象。这里有一个例子:

    Class aClass = ...//obtain class object
    Field[] methods = aClass.getFields();

     

         数组Field[ ]将会存储在类中声明的所有为public的字段的Field对象。

         如果你知道你想要访问的字段的字段名,你可以像这样来访问它:

    Class  aClass = MyObject.class
    Field field = aClass.getField("someField");

     

         上面的例子将会返回Field实例,和下面MyObject声明的字段someField对应:

     

    public class MyObject{
      public String someField = null;
    }

     

         如果不存在和方法getField( )接受的参数一致的字段,会抛出NoSuchFieldException异常。

     ========================================================================================

    • Field Name 

      一旦你获取了一个Field实例,你可以像这样通过Field.getName()方法取得字段名:

    Field field = ... //obtain field object
    String fieldName = field.getName();

     

     ========================================================================================

    • Field Type 

         你可以通过Field.getType() 方法取得字段类型(String, int etc.) :

    Field field = aClass.getField("someField");
    Object fieldType = field.getType();

     

     ========================================================================================

    • Getting and Setting Field Values

      一旦你获取了Field对象的引用,你可以像这样通过Field.get()方法和Field.set()方法get/set字段的值:

    Class  aClass = MyObject.class
    Field field = aClass.getField("someField");
    MyObject objectInstance = new MyObject();
    Object value = field.get(objectInstance);
    field.set(objetInstance, value);

         传给get和set方法的参数objectInstance必须是拥有该字段的实例。在上面的例子中,用了一个MyObject的实例,因为someField是类MyObject的成员实例。
         如果字段是静态字段(public static …),则传null作为get和set方法的参数,而不是上面传的objectInstance。

     ========================================================================================

    • 目录

      这是一个本教程到目前为止涵盖的主题列表:     

    1. Java反射——引言
    2. Java反射——Class对象
    3. Java反射——构造函数
    4. Java反射——字段
    5. Java反射——方法
    6. Java反射——Getter和Setter
    7. Java反射——私有字段和私有方法
    8. Java反射——注解
    9. Java反射——泛型
    10. Java反射——数组
    11. Java反射——动态代理
    12. Java反射——类的动态加载和重新加载

    (敬请期待下一篇翻译)

  • 相关阅读:
    字符串提取数字/汉字/英文字母
    CHARINDEX,PATINDEX,STUFF函数
    raiserror的用法
    数据库备份与还原(通过命令)
    查询某个字段属于哪些表
    设备驱动基础1:设备模型之总线,驱动,设备
    设备模型之kobject,kset及其关系
    模拟电路创新设计
    cdev、udev
    PCB阻抗调节
  • 原文地址:https://www.cnblogs.com/penghongwei/p/3300073.html
Copyright © 2011-2022 走看看