El método set() de java.lang.reflect.Field se usa para establecer el valor del campo representado por este objeto Field en el argumento del objeto especificado al nuevo valor especificado pasado como parámetro. El nuevo valor se desenvuelve automáticamente si el campo subyacente tiene un tipo primitivo. Si el campo es estático, el argumento obj se ignora; puede ser nulo De lo contrario, el campo subyacente es un campo de instancia.
- Este método arroja una excepción diferente dependiendo de escenarios como este método arroja una NullPointerException si el argumento del objeto especificado es nulo
- o IllegalArgumentException si el argumento del objeto especificado no es una instancia de la clase o interfaz que declara el campo subyacente.
- Este método lanza una excepción IllegalAccessException si este objeto Field aplica el control de acceso del lenguaje Java y el campo subyacente es inaccesible.
- Este método genera una IllegalArgumentException si el campo subyacente es de un tipo primitivo, se intenta una conversión de desempaquetado para convertir el nuevo valor en un valor de un tipo primitivo.
- Si este intento falla. Este método genera una excepción IllegalArgumentException si, después de un posible desenvolvimiento, el nuevo valor no se puede convertir al tipo del campo subyacente mediante una conversión de identidad o ampliación.
- Si el campo es estático y aún no se ha inicializado, se inicializa la clase que declaró este campo. El campo se establece en el nuevo valor posiblemente desenvuelto y ampliado. Si el campo está oculto en el tipo de obj, el valor del campo se establece de acuerdo con las reglas anteriores.
Sintaxis:
public void set(Object obj, Object value) throws IllegalArgumentException, IllegalAccessException
Parámetros: Este método acepta dos parámetros:
- obj : que es el objeto cuyo campo se debe modificar y
- value : que es el nuevo valor para el campo de obj que se está modificando.
Retorno : este método no devuelve nada. Excepción : este método arroja la siguiente excepción:
- IllegalAccessException : si este objeto de campo aplica el control de acceso del lenguaje Java y el campo subyacente es inaccesible o final.
- IllegalArgumentException : si el objeto especificado no es una instancia de la clase o la interfaz que declara el campo subyacente (o una subclase o implementador de la misma), o si falla una conversión de desempaquetado.
- NullPointerException : si el objeto especificado es nulo y el campo es un campo de instancia.
- ExceptionInInitializerError : si falla la inicialización provocada por este método.
Los siguientes programas ilustran el método set(): Programa 1:
Java
// 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
Programa 2:
Java
// 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 }
Referencias: https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#set-java.lang.Object-java.lang.Object-
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA