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
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


