Método Field set() en Java con ejemplos

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;
}
Producción:

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;
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *