java newinstance 参数_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…)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值