本篇内容主要讲解“JDK怎么反射实例化对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JDK怎么反射实例化对象”吧!
获取Class对象后最大意义实际上并不是在于只是一个对象的实例化操作形式,更重要的是Class类中提供了一个对象的反射实例化方法(代替了关键字new):
在JDK1.9以前的实例化:
@Deprecated(since="9")public T newInstance() throws InstantiationException, IllegalAccessException
在JDK1.9之后的实例化:
clazz.getDeclaredConstructor().newInstance()
范例:通过newInstance()方法实例化Person类对象
package cn.mldn.vo;public class Person {//任何情况下如果要实例化类对象,一定要调用类中的构造方法public Person(){ //无参构造方法System.out.println("*********** Person类构造方法 ************"); } @Overridepublic String toString() {return "我是一个人,一个脱离了低级趣味的好人!"; } }
package cn.mldn.demo; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Class<?> cls=Class.forName("cn.mldn.vo.Person");Object obj= cls.newInstance(); //实例化对象,JDK1.9后被废除了System.out.println(obj); //输出对象调用toString()方法/** * *********** Person类构造方法 ************ * 我是一个人,一个脱离了低级趣味的好人! */} }
现在通过反射实现的对象实例化处理,依然要调用类中的无参构造方法,其本质等价于“类 对象 = new 类()”,相当于隐含了关键字new,而直接使用字符串进行了替代。
范例:使用getDeclaredConstructor().newInstance()进行对象实例化
package cn.mldn.demo; public class JavaAPIDemo { public static void main(String[] args) throws Exception { Class<?> cls=Class.forName("cn.mldn.vo.Person");Object obj= cls.getDeclaredConstructor().newInstance(); //实例化对象,JDK1.9废除了System.out.println(obj);/** * *********** Person类构造方法 ************ * 我是一个人,一个脱离了低级趣味的好人! */} }
从JDK1.9后,newInstance()被替代了,因为默认的Class类中的newInstance()方法只能调用无参构造,所以很多开发者会认为其描述的不准确,于是将其变换了形式。
到此,相信大家对“JDK怎么反射实例化对象”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。