Java中构造函数newInstance()如何使用呢?

戚薇 Java教程 发布时间:2023-06-27 22:06:57 阅读数:1185 1
下文笔者讲述构造函数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
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202306/6917.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者