java.lang.reflect.Field的set()方法用於將此Field對象在指定對象參數上表示的字段的值設置為作為參數傳遞的指定新值。如果基礎字段具有原始類型,則新值將自動展開。如果該字段是靜態的,則obj參數將被忽略;它可以為null,否則,基礎字段是實例字段。
- 如果指定的對象參數為null,則此方法將根據情況拋出不同的異常,例如,此方法將拋出NullPointerException。
- 如果指定的對象參數不是聲明基礎字段的類或接口的實例,則返回IllegalArgumentException。
- 如果此Field對象正在強製執行Java語言訪問控製,並且基礎字段不可訪問,則此方法將引發IllegalAccessException。
- 如果基礎字段是原始類型,則此方法將引發IllegalArgumentException,嘗試展開轉換以將新值轉換為原始類型的值。
- 如果此嘗試失敗。如果在可能的展開之後,新值不能通過標識或擴展轉換轉換為基礎字段的類型,則此方法將引發IllegalArgumentException。
- 如果該字段是靜態的,並且尚未初始化,則聲明該字段的類將被初始化。該字段設置為可能已展開和擴展的新值。如果該字段以obj類型隱藏,則該字段的值將根據前麵的規則進行設置。
用法:
public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException
參數:此方法接受接受兩個參數:
- obj:是應該修改其字段的對象,並且
- value:這是要修改的obj字段的新值。
返回:此方法不返回任何內容。
異常:此方法引發以下異常:
- IllegalAccessException:如果此Field對象正在實施Java語言訪問控製,並且基礎字段是不可訪問的或最終的。
- IllegalArgumentException:如果指定的對象不是聲明基礎字段(或其子類或實現者)的類或接口的實例,或者展開的轉換失敗。
- NullPointerException :如果指定的對象為null並且該字段是實例字段。
- ExceptionInInitializerError:如果此方法引發的初始化失敗。
以下示例程序旨在說明set()方法:
示例1:
// Java program illustrate set() method
import java.lang.reflect.Field;
public class GFG {
public static void main(String[] args)
throws Exception
{
// create user object
Employee emp = new Employee();
// print value of uniqueNo
System.out.println(
"Value of uniqueNo before "
+ "applying set is "
+ emp.uniqueNo);
// Get the field object
Field field
= Employee.class
.getField("uniqueNo");
// Apply set Method
field.set(emp, (short)1213);
// print value of uniqueNo
System.out.println(
"Value of uniqueNo after "
+ "applying set is "
+ emp.uniqueNo);
// print value of salary
System.out.println(
"Value of salary before "
+ "applying set is "
+ emp.salary);
// Get the field object
field = Employee.class.getField("salary");
// Apply set Method
field.set(emp, 324344.2323);
// print value of salary
System.out.println(
"Value of salary after "
+ "applying set is "
+ emp.salary);
}
}
// sample class
class Employee {
// static values
public static short uniqueNo = 239;
public static double salary = 121324.13333;
}
輸出:
Value of uniqueNo before applying set is 239 Value of uniqueNo after applying set is 1213 Value of salary before applying set is 121324.13333 Value of salary after applying set is 324344.2323
示例2:
// Java program illustrate set() method
import java.lang.reflect.Field;
public class GFG {
public static void main(String[] args)
throws AccessException
{
// create attributes object
attributes att = new attributes();
// Get the value field object
Field field1
= attributes.class
.getField("bolValue");
Field field2
= attributes.class
.getField("intValue");
Field field3
= attributes.class
.getField("doubleValue");
// Apply set Method
field1.set(att, false);
field2.set(att, 1213);
field3.set(att, 342414.131);
// print value of isActive
System.out.println(
"Values after "
+ "applying set are { "
+ att.bolValue + ", "
+ att.intValue
+ ", " + att.doubleValue
+ " }.");
}
}
// sample attributes class
class attributes {
// static value value
public static boolean bolValue = false;
public static int intValue = 13134;
public static double doubleValue = 1314.141;
}
輸出:
Values after applying set are { false, 1213, 342414.131 }
相關用法
- Java Field get()用法及代碼示例
- Java Field isSynthetic()用法及代碼示例
- Java Field toString()用法及代碼示例
- Java Field setShort()用法及代碼示例
- Java Field getType()用法及代碼示例
- Java Field setBoolean()用法及代碼示例
- Java Field isEnumConstant()用法及代碼示例
- Java Field getDeclaredAnnotations()用法及代碼示例
- Java Field getAnnotationsByType()用法及代碼示例
- Java Field toGenericString()用法及代碼示例
- Java Field getInt()用法及代碼示例
- Java Field setInt()用法及代碼示例
- Java Field setByte()用法及代碼示例
- Java Field getName()用法及代碼示例
- Java Field getShort()用法及代碼示例
注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Field set() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。