Java Field get()方法及实例
java.lang.reflect.Field 的 get() 方法用于获取字段对象的值。如果字段有一个原始类型,那么字段的值就会自动被包裹在一个对象中。如果字段是一个静态字段,那么obj的参数被忽略;它可能是空的,否则,基础字段是一个实例字段。如果指定的obj参数为空,该方法会抛出一个NullPointerException,如果指定的对象不是声明底层字段的类或接口的实例,则抛出IllegalArgumentException。如果该字段隐藏在obj的类型中,则根据前面的规则获得该字段的值。
语法
public double get(Object obj) throws IllegalArgumentException, IllegalAccessException
参数: 该方法接受一个参数 obj ,它是要提取字段值的对象。
返回值: 该方法返回对象obj中代表字段的值;原始值在返回之前被包裹在一个适当的对象中。
异常: 该方法抛出以下异常。
- IllegalAccessException – 如果这个字段对象正在执行Java语言的访问控制,并且底层字段是不可访问的。IllegalArgumentException – 如果指定的对象不是声明底层字段的类或接口的实例(或其子类或实现者)。NullPointerException – 如果指定的对象为空,并且该字段是一个实例字段。ExceptionInitializerError – 如果此方法引发的初始化失败。
下面的程序说明了get()方法:
程序1 :
// Java program to demonstrate get() method 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 classclass User { // static double values public static double Marks = 34.13; public static int Fees = 34199; public static String name = "Aman"; public static double getMarks() { return Marks; } public static void setMarks(double marks) { Marks = marks; } public static int getFees() { return Fees; } public static void setFees(int fees) { Fees = fees; } public static String getName() { return name; } public static void setName(String name) { User.name = name; }}
输出
Value of Field Marks is 34.13Value of Field Fees is 34199Value of Field name is Aman
程序2
// Java program to demonstrate get() method import java.lang.reflect.Field; public class GFG { public static void main(String[] args) throws Exception { // Create the RealNumbers class object Fields field = new Fields(); // Get the all field objects of User class Field[] fieldsOfFieldClass = Fields.class.getFields(); for (int i = 0; i < fieldsOfFieldClass.length; i++) { // get value Object value = fieldsOfFieldClass[i] .get(field); // print result System.out.println( "Value of Field " + fieldsOfFieldClass[i].getName() + " is " + value); } } // RealNumbers class static class Fields { // double field public static final double doubleValue = 9999999.34567; public static final int intValue = 9999999; public static final float floatValue = 9999999.34567f; public static final boolean booleanValue = true; }}输出
Value of Field doubleValue is 9999999.34567Value of Field intValue is 9999999Value of Field floatValue is 9999999.0Value of Field booleanValue is true
参考文献 : https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#get-java.lang.Object-
