当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java java.lang.reflect.Field用法及代码示例


软件分析自身的能力称为反射。这是由 java.lang.reflect 包和 Class 中的元素提供的。Field 与整个反射机制具有相同的目的,在运行时而不是在编译时动态地分析软件组件并说明其函数。Java 与许多其他语言一样,是静态类型的。反射机制允许人们在某种程度上绕过它,并引入一些更动态的函数,例如按名称检索字段的值。包 java.lang.reflect 包含多个接口。特别令人感兴趣的是 Member,它定义了允许获取有关类的字段、构造函数或方法的信息的方法。该包中还有十个类,即 AccessibleObject、Array、Constructor、Executable、Field、Method、Modifier、Parameter、Proxy、ReflectPermission。

下面的应用演示了java反射的简单使用。它打印类 java.awt.Dimension 的字段。程序从Class的forName()方法开始,获取java.awt.Dimension的类对象。一旦获得,getFields() 用于分析类对象。它们返回提供有关该对象的信息的 Field 对象数组。

方法 说明
等于(对象 obj ) 此方法将此字段与指定对象进行比较。
获取注释类型() 该方法返回一个AnnotatedType对象,该对象表示使用类型来指定此Field表示的字段的声明类型
getAnnotation() 如果存在指定类型的该元素的注释,则此方法返回该元素的注释,否则返回 null。
getAnnotationByType() 此方法返回与该元素关联的注释
getBoolean(Object obj ) 此方法获取静态或实例布尔字段的值
getByte(Object obj ) 此方法获取静态或实例字节字段的值
getChar(Object obj ) 此方法获取 char 类型或可通过扩展转换转换为 char 类型的其他基本类型的静态或实例字段的值
getDeclaredAnnotations() 此方法返回直接出现在该元素上的注释
getDeclaringClass() 此方法返回表示声明此 Field 对象表示的字段的类或接口的 Class 对象
getDouble(Object obj ) 此方法获取 double 类型或可通过扩展转换转换为 double 类型的其他基本类型的静态或实例字段的值
getFloat(Object obj ) 此方法获取 float 类型或可通过扩展转换转换为 float 类型的其他基本类型的静态或实例字段的值
getGenericType() 此方法返回一个 Type 对象,该对象表示此 Field 对象表示的字段的声明类型
getInt(Object obj ) 此方法返回一个 Type 对象,该对象表示此 Field 对象表示的字段的声明类型
getLong(Object obj ) 此方法获取 long 类型的静态或实例字段的值,或通过扩展转换可转换为 long 类型的其他基本类型的值
getModifiers() 此方法以整数形式返回由此 Field 对象表示的字段的 Java 语言修饰符
getName() 此方法返回由此 Field 对象表示的字段的名称
getShort(Object obj ) 此方法获取 Short 类型的静态或实例字段的值,或者通过扩展转换可转换为 Short 类型的其他原始类型的值
hashCode() 此方法返回此字段的哈希码。
isEnumConstant() 如果该字段表示枚举类型的元素,则该方法返回 true;否则返回 false
isSynthetic() 如果该字段是合成字段,则此方法返回 true;否则返回 false
setBoolean(Object obj , boolean z) 此方法将指定对象上的字段值设置为布尔值
setByte(Object obj, byte b) 此方法将指定对象上的字段值设置为字节
setChar(Object obj, char c) 此方法将指定对象上的字段值设置为字符
setDouble(Object obj, double d) 此方法将指定对象上的字段值设置为双精度型
setFloat(Object obj, float f) 此方法将字段的值设置为指定对象上的浮点数
setInt(Object obj, int i) 此方法将指定对象上的字段值设置为int
setLong(Object obj, long l) 此方法将指定对象上的字段值设置为 long
setShort(Object obj, short s) 该方法将指定对象上的字段值设置为short
toGenericString() 此方法返回说明此字段的字符串,包括其通用类型
toString() 该方法返回说明该字段的字符串

示例 1:

Java


import java.lang.reflect.Field;  
    
public class GFG {  
    
    public static void main(String[] args)  
        throws Exception  
    {  
    
        // Create the User class object  
        User user = new User();  
    
        // Get the all field objects of User class  
        Field[] fields = User.class.getFields();  
    
        for (int i = 0; i < fields.length; i++) {  
    
            // get value of the fields  
            Object value = fields[i].get(user);  
    
            // print result  
            System.out.println("Value of Field "
                               + fields[i].getName()  
                               + " is " + value);  
        }  
    }  
}  
    
// sample User class  
class User {  
    
    public static String name = "Dipsundar";  
    
    public static String getName()  
    {  
        return name;  
    }  
    
    public static void setName(String name)  
    {  
        User.name = name;  
    }  
}
输出
Value of Field name is Dipsundar

示例 2:

Java


import java.lang.reflect.Field; 
  
public class GFG { 
  
    public static void main(String[] args) throws Exception 
    { 
  
        // Create the User class object 
        User user = new User(); 
  
        // Get the all field objects of User class 
        Field[] fields = User.class.getFields(); 
  
        for (int i = 0; i < fields.length; i++) { 
  
            // get value of the fields 
            Object value = fields[i].get(user); 
  
            // print result 
            System.out.println("Value of Field "
                               + fields[i].getName() 
                               + " is " + value); 
        } 
    } 
} 
  
// sample User class 
class User { 
  
    public static String name = "Dipsundar"; 
  
    public static String getName() { return name; } 
  
    public static void setName(String name) 
    { 
        User.name = name; 
    } 
}
输出
Value of Field booleanValue is false


相关用法


注:本文由纯净天空筛选整理自dipsundarmondal大神的英文原创作品 java.lang.reflect.Field Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。