public class ConstructorDemo {

    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException {

        // 获取Class对象
        Class<?> clazz = Class.forName("com.unit1.test.reflect.Dog");

        // 获取Class类的构造方法对象
        // 1、获取所有公共构造方法对象getConstructors()
        Constructor[] constructors = clazz.getConstructors();
        for (Constructor constructor : constructors) {
            System.out.println(constructor);
        }

        // 2、获取单个公共构造方法对象getConstructor(int.class),注意:这里的参数必须和我们要获取的构造方法里的参数一致
        Constructor constructor = clazz.getConstructor(String.class, int.class);
        System.out.println(constructor);

        // 3、获取所有构造方法对象getDeclaredConstructors()
        Constructor[] declaredConstructors = clazz.getDeclaredConstructors();
        for (Constructor constructor2 : declaredConstructors) {
            System.out.println(constructor2);
        }

        // 4、获取单个构造方法对象getDeclaredConstructor(int.class),注意:这里的参数必须和我们要获取的构造方法里的参数一致
        Constructor declaredConstructor = clazz.getDeclaredConstructor(int.class);
        System.out.println(declaredConstructor);
    }

}
public class Dog {

    private String name;
    private int age;

    public Dog() {}

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    private Dog(String name) {
        this.name = name;
    }

    private Dog(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public void eat() {
        System.out.println("吃");
    }

    @Override
    public String toString() {
        return "Dog [name=" + name + ", age=" + age + "]";
    }

}