调用运行时类当中的指定构造器

本文深入探讨了Java反射机制中调用构造器创建对象的方法,重点讲解newInstance与getDeclaredConstructor的区别及应用场景,通过实例演示如何利用反射实现动态对象创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调构造器是用来造对象,造对象最常用的还是newInstance的方式(调用空参的构造器)
再采用针对属性的方法对属性进行操作

newInstance更能利用反射的动态性,我们更希望用反射写出更通用的功能,通用即指的是适合于各种情况

调用运行时类当中的指定构造器使用得比较少,因为并不通用。一般是针对某个具体的情况
比如说我们想调用Person类中的这个构造器

    @MyAnnotation(value = "abc")
    private Person(String name) {
        this.name = name;
    }
public class FieldTest {

    @Test
    public void test1() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class clazz = Person.class;
        //1.获取指定的构造器
        //参数为可变参数,说明的是参数列表(说的是形参类型,因为也不靠形参名去区分不同的方法,而是形参类型)
        Constructor constructor = clazz.getDeclaredConstructor(String.class);

        //保证此构造器是可访问的
        constructor.setAccessible(true);

        //调用此构造器创建运行时类的对象
        Object obj = constructor.newInstance("Tom");//此方法需要对应的参数
        Person per=(Person)obj;

        //调用Person中的toString方法
        System.out.println(per);//Person{name='Tom', age=0, id=0}
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值