Método constructor newInstance() en Java con ejemplos

El método newInstance() de una clase Constructor se usa para crear e inicializar una nueva instancia de este constructor, con los parámetros de inicialización pasados ​​como parámetro a este método. Cada parámetro se desenvuelve para que coincida con los parámetros formales primitivos, y tanto los parámetros primitivos como los de referencia están sujetos a conversiones de invocación de métodos según sea necesario.

Si el número de parámetros formales del constructor es 0, el parámetro proporcionado tiene una longitud de 0 o es nulo. Si el constructor se completa normalmente, devuelve la instancia recién creada e inicializada.

Sintaxis:

public T newInstance(Object... initargs)
  throws InstantiationException, IllegalAccessException,
         IllegalArgumentException, InvocationTargetException

Parámetros: este método acepta initargs como parámetro, que es una array de objetos que se pasarán como argumentos a la llamada del constructor. Los valores de los tipos primitivos se envuelven en un objeto contenedor del tipo apropiado (p. ej., float en Float).

Valor devuelto: este método devuelve un nuevo objeto creado llamando al constructor que representa este objeto.

Excepción: este método arroja las siguientes excepciones:

  • IllegalAccessException : si este objeto Constructor aplica el control de acceso del lenguaje Java y el constructor subyacente es inaccesible.
  • IllegalArgumentException : si el número de parámetros reales y formales difieren; si falla una conversión de desempaquetado para argumentos primitivos; o si, después de un posible desenvolvimiento, el valor de un parámetro no se puede convertir al tipo de parámetro formal correspondiente mediante una conversión de invocación de método; si este constructor pertenece a un tipo de enumeración.
  • InstanciationException : si la clase que declara el constructor subyacente representa una clase abstracta.
  • InvocaciónTargetException : si el constructor subyacente lanza una excepción.
  • ExceptionInInitializerError : si falla la inicialización provocada por este método.

Los siguientes programas ilustran el método newInstance():
Programa 1:

// Java program to demonstrate
// Constructor.newInstance() method
  
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
  
public class GFG {
  
    public static void main(String... args)
        throws InstantiationException,
               IllegalAccessException,
               IllegalArgumentException,
               InvocationTargetException
    {
  
        // An array of constructor
        Constructor[] constructor
            = Test.class.getConstructors();
  
        // Apply newInstance method
        Test sampleObject
            = (Test)constructor[0].newInstance();
  
        System.out.println(sampleObject.value);
    }
}
  
class Test {
  
    String value;
  
    public Test()
    {
        System.out.println("New Instance is created");
        value = "New Instance";
    }
}

Producción:

New Instance is created
New Instance

Programa 2:

// Java program to demonstrate
// Constructor.newInstance() method
  
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
  
public class GFG {
  
    public static void main(String... args)
        throws InstantiationException,
               IllegalAccessException,
               IllegalArgumentException,
               InvocationTargetException
    {
  
        // an array of constructor
        Constructor[] constructor
            = Test.class.getConstructors();
  
        // apply newInstance method
        Test sampleObject
            = (Test)constructor[0]
                  .newInstance("New Field");
  
        System.out.println(sampleObject.getField());
    }
}
  
class Test {
  
    private String field;
  
    public Test(String field)
    {
        this.field = field;
    }
  
    public String getField()
    {
        return field;
    }
  
    public void setField(String field)
    {
        this.field = field;
    }
}

Producción:

New Field

Referencias: https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/Constructor.html#newInstance(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 *