创建运行时类的对象

创建运行时类的对象

方法:调用Class对象的newInstance()方法;

要求:

  1. 类必须有一个无参构造器.
  2. 类的构造器访问权限要足够.
//获取运行时类的Class对象clazz
Class clazz=Person.class;

//现在我们可以用clazz去查看Person(照镜子,反射)中的一切
//本章是创建运行时类的对象,我们就去看构造器
//调用getDeclaredConstructors()方法获取Person所有的构造器,然后报存在数组里面
Constructor[]declaredConstructors=clazz.getDeclaredConstructors();
//使用增强for循环输出Person类所有的构造器
for (Constructor c:declaredConstructors){
            System.out.println(c);
        }

输出结果为:
private first.Person(java.lang.String); 一个带String类型的参数构造器;
public first.Person(java.lang.String,int) ; 一个带String和int两个参数的构造器;
public first.Person(); 一个空参构造器;

记住构造器就是来造对象的,那我们可以用上面获取的Person构造器来造对象:

  1. 确定使用哪一个构造器,使用getConstructor()方法明确构造器:(构造器一定要是Person(运行时类中有存在的))

    //我采用的是上面输出的第二个构造器 
    Constructor<Person> constructor = clazz.getConstructor(String.class, int.class);
    
  2. 然后使用构造器来创建对象,使用newInstance()

    Person p1 = constructor.newInstance("小米",5999);
    
    System.out.println(p1);
    //Person{name='小米', age=5999}
    

我本人学到这里有点懵逼了,我就这样理解,运行时类Person照镜子,在镜子里面有两个角色,一个是作为一个对象,Person是对象了,他属于Class这个类.Class clazz=Person.class.

然后呢,作为一个类,类里面有很多东西,构造器,方法,属性,注解等很多东西,我们就把Person当做一个类来使用,形式上是对象clazz来调用方法.就用clazz来获取(确定)构造器,然后造对象.

咋越说越复杂…大概逻辑差不多了吧…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值