上一篇文章中已经可以获取到类的字节码文件。那么该如何实例化对象呢?
1.根据字节码文件创建Person对象(无参构造函数)
Object obj=clazz.newInstance();
方法说明:newInstance()
创建此 Class 对象所表示的类的一个新实例。
即可产生Person类的对象,默认调用的是Person的无参构造函数
2.那么如果该类没有无参构造函数,该如何获取呢?
查阅JavaApi可以发现这样的一个函数
Constructor<?>[] |
getConstructors() 返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。 |
那么什么是返回的参数Constructor呢 ?
Constructor
提供关于类的单个构造方法的信息以及对它的访问权限。(也就是说获取构造函数)
Constructor constructor=clazz.getConstructor(String.class,int.class);
//通过构造器初始化队象
Object obj=constructor.newInstance("xiaoming",38);
函数运行结果为:person param run..xiaoming:38
这样就会直接调用Person类的有参构造函数(注意这里的getConstructor参数为String.class,int.class)
以上方法就是获得该类的实例化对象。