软件分析自身的能力称为反射。这是由 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
相关用法
- Java java.lang.reflect.Field.equals()用法及代码示例
- Java java.lang.reflect.Field.get()用法及代码示例
- Java java.lang.reflect.Field.getAnnotation()用法及代码示例
- Java java.lang.reflect.Field.getBoolean()用法及代码示例
- Java java.lang.reflect.Field.getByte()用法及代码示例
- Java java.lang.reflect.Field.getChar()用法及代码示例
- Java java.lang.reflect.Field.getDeclaredAnnotations()用法及代码示例
- Java java.lang.reflect.Field.getDeclaringClass()用法及代码示例
- Java java.lang.reflect.Field.getDouble()用法及代码示例
- Java java.lang.reflect.Field.getFloat()用法及代码示例
- Java java.lang.reflect.Field.getGenericType()用法及代码示例
- Java java.lang.reflect.Field.getInt()用法及代码示例
- Java java.lang.reflect.Field.getLong()用法及代码示例
- Java java.lang.reflect.Field.getModifiers()用法及代码示例
- Java java.lang.reflect.Field.getName()用法及代码示例
- Java java.lang.reflect.Field.getShort()用法及代码示例
- Java java.lang.reflect.Field.getType()用法及代码示例
- Java java.lang.reflect.Field.hashCode()用法及代码示例
- Java java.lang.reflect.Field.isEnumConstant()用法及代码示例
- Java java.lang.reflect.Field.isSynthetic()用法及代码示例
- Java java.lang.reflect.Field.setBoolean()用法及代码示例
- Java java.lang.reflect.Field.setByte()用法及代码示例
- Java java.lang.reflect.Field.setChar()用法及代码示例
- Java java.lang.reflect.Field.setDouble()用法及代码示例
- Java java.lang.reflect.Field.setFloat()用法及代码示例
注:本文由纯净天空筛选整理自dipsundarmondal大神的英文原创作品 java.lang.reflect.Field Class in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。