美文网首页javaSE
关于newInstance()方法有参数和无参数

关于newInstance()方法有参数和无参数

作者: virtual灬zzZ | 来源:发表于2023-03-30 10:46 被阅读0次
一、通过反射创建新的类实例的两种方式:

Class.newInstance()
Constructor.newInstance()

二、两种创建方式的比较:

Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数;
Constructor.newInstance() 可以根据传入的参数,调用任意构造函数。

Class.newInstance() 要求被调用的构造函数是可见的,即必须是public的;
Constructor.newInstance() 在特定的情况下,可以调用私有的构造函数,需要通过setAccessible(true)实现。

三、代码示例:
package com.evan.reflect;
 
class Boy
{
    public Boy()
    {
        System.out.println("My name is evan.");
    }
    //设置构造方法私有
    private Boy(int age, String hobby)
    {
        System.out.println("I'm "+age+"year old.");
        System.out.println("I like "+hobby+".");
    }
}
package com.evan.reflect;
 
import java.lang.reflect.Constructor;
 
 
public class Test {
    
    public static void main(String []args) throws Exception
    {
        Class clazz=Class.forName("com.evan.reflect.Boy");
        //调用无参数构造
        Boy boyFirst=(Boy) clazz.newInstance();
 
 
        //调用有参数构造需要使用Constructor类对象
        //这种方式和下面这种方式都可以,注意第二种的参数类型是 new Class[]
        Constructor constructor=clazz.getDeclaredConstructor(int.class,String.class);
        //Constructor constructor=clazz.getDeclaredConstructor(new Class[]{int.class,String.class});
 
        //设置私有构造可以访问
        constructor.setAccessible(true);
 
        //这种方式和下面这种方式都可以,注意这里的参数类型是 new Object[]
        Boy boySecond=(Boy) constructor.newInstance(18,"programming");
        //Boy boySecond=(Boy) constructor.newInstance(new Object[] {18,"programming"});
    }
}
运行结果
My name is evan.
I'm 18year old.
I like programming.

相关文章

  • scala 方法

    定义语法: 带有列表参数的方法: 无参数方法

  • 第九章有参方法和包

    有参方法和包 定义参数的方法 参数列表:(数据类型 参数1,数据类型 参数2) 调用参数的方法 定义带参数的方...

  • Swift - Functions

    定义和调用方法 可以定义一个或多个名字 参数和返回值 无参 多个参数 无返回值 返回多个值 参数标签和参数名 多个...

  • 三 常用API第二部分——第五节 StringBuilder类。

    1、StringBuilder的原理 2、 有参数无参数的构造方法 java.lang.StringBuilder...

  • 【JMeter】参数化方法(二)

    文/amy 前面 【JMeter】参数化方法(一)已简单介绍关于参数化的几种常用方法, 关于如下配置以上几种参数方...

  • java练习题

    1、继承中的构造方法 输出:父类无参数的构造方法子类有参数的构造方法400 输出: ABeijingBShangh...

  • scala学习 二(方法、函数、区别)

    方法 定义语法: 带有参数列表的方法 无参数列表的方法 带有默认值参数的方法(一个参数可以带多个默认值,位置不同也...

  • 2018-04-27

    函数根据有没有参数,有没有返回值,可以相互组合,一共有4种无参数,无返回值无参数,又反悔有参数,无返回值有参数,有...

  • 二.Dart方法、异常与类

    方法 一等方法对象 方法可以有两种类型的参数:必需的和可选的。 必需的参数需要在参数列表前面, 后面再定义可选参数...

  • #关于函数

    一、无参数 无返回值 二、有参数 无返回值 三、无参数 有返回值 四、有参数 有返回值 五、递归函数 自己调用自...

网友评论

    本文标题:关于newInstance()方法有参数和无参数

    本文链接:https://www.haomeiwen.com/subject/xwnqddtx.html