运行时对象的创建是反射机制使用最多的地方。这里我们用两种方式创建运行时对象。
newInstance()
创建运行时类的对象使用的是newInstance(),实际上就是调用了运行时类的空参数的构造器。
要想能够创建成功:①要求对应的运行时类要有空参数的构造器②类的构造器的访问权限需要足够。
难道没有无参的构造器就不能创建对象了吗?
不是!只要在操作的时候明确的调用类中的构造方法,并将参数传递进去之后,才可以实例化操作。步骤如下:
1)通过Class类的getDeclaredConstructor(Class … parameterTypes)取得本类的指定形参类型的构造器
2)向构造器的形参中传递一个对象数组进去,里面包含了构造器中所需的各个参数。
3)通过Constructor实例化对象。
//1.根据全类名获取对应的Class对象
String name =“atguigu.java.Person";
Class clazz = null;
clazz =Class.forName(name);
//2.调用指定参数结构的构造器,生成Constructor的实例
Constructor con =clazz.getConstructor(String.class,Integer.class);
//3.通过Constructor的实例创建对应类的对象,并初始化类属性
Person p2 = (Person) con.newInstance("Peter",20);
System.out.println(p2);