文章开始,先把问题抛出来吧,这样看的时候心中就一直会有这样的疑问:
通过Class.forName与通过classLoader.loadClass 获取到Class有什么区别?
Class.forName与classLoader.loadClass 区别
话不多说,线上代码测验一下。
Test对象类:
package reflect;
public class Test {
static{
System.out.println("静态代码块");
}
{
System.out.println("非静态代码块");
}
int a;
public Test(int a) {
this.a = a;
System.out.println("有参数构造方法");
}
public Test() {
System.out.println("无参数构造方法");
}
}
测试结果类:
package reflect;
public class Main {
public static void main(String[] args) {
try {
System.out.println("调用Class.forName:");
Class classa = Class.forName("reflect.Test");
System.out.println("调用完Class.forName,执行newInstance:");