java通过反射创建对象的两种方式与区别
1.使用Class对象的newInstance()方法来创建对象:
具体步骤是:
1、获取类的Class对象(有三种方式可以获取,可以自行百度一下)
2、通过调用所获取到的Class对象的newInstance()来获得对象,该方法会返回一个Object类型的对象,所以还需要强转一下。
2.通过Constructor类的newInstance()方法获取
具体步骤是
1、获取一个类的一个Class实例
2、调用Class中的getConstructor()方法获得一个Constructor对象
3、调用Constructor的newInstance()方法获得一个类的实例
两种方法的区别
第一种方法:通过Class的newInstance()方法只能使用默认的构造方法,换句话说就是使用此方法是不能通过带参的构造函数来生成一个类的实例。
第二种方法:通过Constructor的newInstance()方法可以使用默认的构造方法,也可以使用带参的构造方法来生成一个类的实例。
注意:在只有一个默认的构造函数(或不带参数的构造函数)时,使用第一种方法比较方便,如果要使用类中的其他构造方法那只能使用第二种方法了。