Java中构造函数newInstance()如何使用呢?
下文笔者讲述构造函数newInstance()的用法简介说明
学习完本篇之后,你将掌握newInstance()方法的用法,如下所示
学习完本篇之后,你将掌握newInstance()方法的用法,如下所示
newInstance()方法的功能
newInstance()方法的功能: 用于创建和初始化该构造函数的新实例 初始化参数作为参数传递给该方法 每个参数都被展开以匹配基元形式参数 并且基元和引用参数都根据需要进行方法调用转换 注意事项: 当构造函数的形式参数个数为 0 则提供的参数长度为 0 或 null 当构造函数正常运行,则返回新创建并初始化的实例
构造函数newInstance的语法
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException 参数: 接受initargs作为参数 它是一个对象数组 作为参数传递给构造函数调用 基础类型的值被包装为对应的包装对象中(如:float对应Float) 返回值: 这个方法返回一个新对象 这个对象是通过调用这个对象所代表的构造函数创建的。 异常: 该方法抛出以下异常: IllegalAccessException: 如果constructor对象正在执行 Java 语言访问控制 且底层的 Constructor 不可访问。 IllegalArgumentException: 如果实际参数和形式参数的个数不同; 如果基元参数的展开转换失败;或 如果在可能的展开之后,参数值不能通过方法调用转换转换为相应的形式参数类型; 如果此构造函数属于枚举类型,都会抛出此异常 instance exception: 如果声明底层构造函数的类代表抽象类。 InvocationTargetException: 如果底层构造函数抛出异常。 exceptioniniinitializerror: 如果这个方法引发的初始化失败。
newInstance()程序示例
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class TestClass { 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
newInstance()程序示例2
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class TestClass { public static void main(String... args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { //返回构造器数组对象 Constructor[] constructor = Test.class.getConstructors(); //使用newInstance生成对象 Test sampleObject = (Test)constructor[0] .newInstance("test java265"); 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; } } //运行以上代码,将输出以下信息 test java265
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。