当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Java Constructor newInstance()用法及代码示例


构造函数类的newInstance()方法用于创建和初始化此构造函数的新实例,并将初始化参数作为参数传递给此方法。展开每个参数以匹配原始形式参数,并且必要时对原始参数和引用参数都进行方法调用转换。

如果构造函数的形式参数数量为0,则提供的参数长度为0或为null。如果构造函数正常完成,则返回新创建并初始化的实例。

用法:


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

参数:此方法接受initargs作为参数,它是将作为参数传递给构造函数调用的对象数组。基本类型的值被包装在适当类型的包装对象中(例如,Float中的float)。

返回值:此方法返回一个新对象,该对象是通过调用该对象表示的构造函数而创建的。

异常:此方法引发以下异常:

  • IllegalAccessException:如果此Constructor对象正在强制执行Java语言访问控制,而基础构造函数不可访问。
  • IllegalArgumentException:如果实际参数和形式参数的数量不同;如果原始参数的展开转换失败;或者在可能的解包之后,无法通过方法调用转换将参数值转换为相应的形式参数类型;或者如果此构造函数与枚举类型有关。
  • InstantiationException:如果声明基础构造函数的类表示抽象类。
  • InvocationTargetException:如果基础构造函数引发异常。
  • ExceptionInInitializerError:如果此方法引发的初始化失败。

以下示例程序旨在说明newInstance()方法:
示例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"; 
    } 
}

输出:

New Instance is created
New Instance

示例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; 
    } 
}

输出:

New Field

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



相关用法


注:本文由纯净天空筛选整理自AmanSingh2210大神的英文原创作品 Constructor newInstance() method in Java with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。