import java.lang.reflect.Constructor;
/*
使用反射机制创建对象
 */
public class ReflectNew {
    public static void main(String[] args) throws Exception{
        Class c = Class.forName("com.Vip");
        // 调用无参构造方法,第13行代码和第14-15行代码功能相同。
        // Object noObj = c.newInstance();
        Constructor noC = c.getDeclaredConstructor();
        Object noObj = noC.newInstance();
        System.out.println(noObj);
        // 调用有参构造方法,先获取到这个有参构造方法,再传参数new对象。
        Constructor haveC = c.getDeclaredConstructor(int.class, String.class, String.class, boolean.class);
        Object haveObj = haveC.newInstance(001, "zhangsan", "2000-1-1", true);
        System.out.println(haveObj);
    }
}
class Vip {
    int no;
    String name;
    String birth;
    boolean sex;
    public Vip() {
    }
    public Vip(int no, String name, String birth, boolean sex) {
        this.no = no;
        this.name = name;
        this.birth = birth;
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "Vip{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", birth='" + birth + '\'' +
                ", sex=" + sex +
                '}';
    }
}