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