利用反射创建对象

有参构造器的类:

public class Demo {
    private String a;
    private Integer b;

    public Demo(String a) {
        this.a = a;
    }

    public Demo(Integer b) {
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public Integer getB(){
        return b;
    }

}

无参构造器的类:

public class Demo2 {
    public String getString(String s){
        return s;
    }
}

测试类:

public class Test {
    public static void main(String[] args) throws Exception {
        //反射,用指定的构造器新建一个对象
        Class c = Demo.class;
        Constructor<Demo> constructor = c.getConstructor(String.class);//通过构造器参数类型查找构造器
        Demo demo = constructor.newInstance("aa");
        System.out.println(demo.getA());

        Constructor<Demo> constructor1 = c.getConstructor(Integer.class);//通过构造器参数类型查找构造器
Demo demo1 = constructor1.newInstance(2); System.out.println(demo1.getB()); //反射,用默认构造器创建对象 Class c2 = Demo2.class; Demo2 demo2 = (Demo2) c2.newInstance(); System.out.println(demo2.getString("dddd")); } }

输出:

aa
2
dddd

原文地址:https://www.cnblogs.com/BonnieWss/p/11649268.html