Constructor newInstance() method in Java with Examples

The newInstance() method of a Constructor class is used to create and initialize a new instance of this constructor, with the initialization parameters passed as parameter to this method. Each parameter is unwrapped to match primitive formal parameters, and both primitive and reference parameters are subject to method invocation conversions as necessary.

If the number of formal parameters of the constructor is 0, the supplied parameter is of length 0 or null. If the constructor completes normally, returns the newly created and initialized instance.

Syntax:



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

Parameters: This method accepts initargs as the parameter which is an array of objects to be passed as arguments to the constructor call. The values of primitive types are wrapped in a wrapper object of the appropriate type (e.g. float in Float).

Return value: This method returns a new object created by calling the constructor this object represents.

Exception: This method throws following Exceptions:

  • IllegalAccessException: if this Constructor object is enforcing Java language access control and the underlying constructor is inaccessible.
  • IllegalArgumentException: if the number of actual and formal parameters differ; if an unwrapping conversion for primitive arguments fails; or if, after possible unwrapping, a parameter value cannot be converted to the corresponding formal parameter type by a method invocation conversion; if this constructor pertains to an enum type.
  • InstantiationException: if the class that declares the underlying constructor represents an abstract class.
  • InvocationTargetException: if the underlying constructor throws an exception.
  • ExceptionInInitializerError: if the initialization provoked by this method fails.

Below programs illustrate the newInstance() method:
Program 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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";
    }
}

chevron_right


Output:

New Instance is created
New Instance

Program 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
    }
}

chevron_right


Output:

New Field

References: https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/Constructor.html#newInstance(java.lang.Object…)



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.