创建对象的方法有4种:分别是new clone 反射 反序列化
反射
class的获取有三种方法:
第一种:
Person p = new Person();
Class clazz1 = p.getClass();
第二种:
Class clazz2 =Person.class
第三种(应用最多的):
Class clazz3= Class.forName("com.blb.Demo4.Person"); System.out.println(clazz3.getName());
直接调用无参的构造方法创建对象,前提是对象中必须具有无参数的构造方法
Person p = (Person) clazz3.newInstance();
返回所有的public修饰的构造方法 返回值是数组类型的
Constructor[] constructors=clazz3.getConstructors();
//遍历
for (Constructor c : constructors) {
System.out.println(c.getName());
}
返回所有的构造方法 与上述区别是所以的构造方法
Constructor[] constructors1 = clazz3.getDeclaredConstructors();
for (Constructor c : constructors1) {
System.out.println(c);
}
定向获取某个构造器 (填上对应的参数类型.class即可);
Constructor c = clazz3.getDeclaredConstructor(String.class,int.class);
Person p1 = (Person) c.newInstance("小程",18);//定义的是Object类 需要强转为 Person类
那么如何使用私有的构造方法来创建对象呢?
需要c.setAccessible(true);//给权限
c.setAccessible(true);//给权限
Person p2 = (Person) c.newInstance("小程");
p2.mehtod1();