java反射创建类会调用构造函数吗

首先说答案:肯定是调用的

背景

今天在群里看到一个人问问题,说自己的反射创建类为什么没有走构造函数,然后群里就有个人说反射不走构造函数,这个回答肯定是错的,可能他的意思是不走他的有参构造函数,因为问问题人写的类中只有一个有参构造。我们不过分揣摩,先写个例子证明是走构造函数的。

直接上代码

我们先写一个简单的类User

public  class User {

    private String name;

    private Integer age;

    public User() {
        System.out.println("无参");
    }

    public User(String name, Integer age) {
        System.out.println("有参");
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

我们这里分别给一个无参,一个有参的构造函数,无参必须要有的,不然发射的时候出报错。

下面测试一下

  User user = User.class.getConstructor(String.class,Integer.class).newInstance("张三",12);
  User user2 = User.class.newInstance();

运行结果是
有参
无参

我们可以看到是输出个构造函数中的输出字符的,所以反射创建类是会走构造函数的。

你可能感兴趣的:(java反射创建类会调用构造函数吗)