當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java Field set()用法及代碼示例


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 }

參考文獻: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#set-java.lang.Object-java.lang.Object-



相關用法


注:本文由純淨天空篩選整理自AmanSingh2210大神的英文原創作品 Field set() method in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。