package test;
import java.lang.reflect.Constructor;
class Monkey {
public int age;
public String name;
// 空构造方法
public Monkey() {
}
// 带参数的构造方法
public Monkey(String name) {
this.name = name;
}
// 私有的构造方法
private Monkey(String name, int age) {
this.name = name;
this.age = age;
}
@Override
// 复写toString方法
public String toString() {
return "name : " + name + " age:" + age;
}
}
public class InstanceDemo {
public static void main(String[] args) throws Exception {
// 获取Monkey的类
Class<Monkey> clz = Monkey.class;
Monkey m = null;
// 通过一个空的构造方法创造一个类的实例
m = clz.newInstance();
System.out.println(m);
// 获取Monkey的带参数的构造方法
Constructor<Monkey> con = clz.getConstructor(String.class);
// 给实例赋值
m = con.newInstance("ape");
System.out.println(m);
System.err.println("---------我是华丽的分割线-------------");
// 获取自己类私有的带参数的构造方法
Constructor<Monkey> cc = clz.getDeclaredConstructor(String.class,
int.class);
// 忽略访问权限
cc.setAccessible(true);
// 按参数列表给实例赋值
m = cc.newInstance("ape1", 10);
System.out.println(m);
}
}