介绍
本篇文章给大家分享的是有关Java反射获取实例的速度对比,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
公共静态void main (String [] args) { 尝试{ int MAX=100000; for (int数=0;数& lt;50;计数+ +){ System.out.println(“====第“;+数+“次”); 长s1=System.currentTimeMillis (); for (int i=0;我& lt;马克思;我+ +){ 人o=(人)forname (“com.qingtai.domin.Person") .newInstance (); } 长e1=System.currentTimeMillis (); System.out.println (“1 _duration:“;+ (e1 - s1)); 长s2=System.currentTimeMillis (); 类clazz=forname (“com.qingtai.domin.Person"); for (int i=0;我& lt;马克思;我+ +){ 人的人=(人)clazz.newInstance (); } 长e2=System.currentTimeMillis (); System.out.println (“2 _duration:“;+ (e2 - s2)); } }捕捉(异常e) { e.printStackTrace (); } }
输出:
====第39次1 _duration: 72 2 _duration: 3====第40次1 _duration: 79 2 _duration: 12====第41次1 _duration: 92 2 _duration: 8====第42次1 _duration: 80 2 _duration: 5
引用>
地图的价值不存储全路径名,在初始化的时候地图的价值直接存储类对象,在反射过程中速度提升很大。
<强> java反射获取类实例并调用私有方法强>
我就废话不多说了,大家还是直接看代码吧~
公共类TestReflect{//测试类 公共空间生(){//访问权限最大 System.out.println(“公共run"); } 保护无效mProtected(){//同包下才能访问(实验对象) System.out.println(“保护run"); } 私人空间mPrivate(){//只有本类中才能访问(实验对象) System.out.println(“私人run"); } }公共静态void main (String [] args){抛出异常 Class<及# 63;比;class1=零;//反射获取类实例,用的最多的就是jdbc获取驱动的时候就是用forname (“xxx");//一般采用这种形式 class1=forname (“com.xxx.TestReflect");//class1=new TestReflect () .getClass ();//class1=TestReflect.class;//类实例化,到这里就可以访问TestReflect类的公共属性的成员方法和成员变量了 TestReflect tr=(TestReflect) class1.newInstance ();//通过. lang . class类得到一个方法对象//api中java.lang.Class.getDeclaredMethod方法介绍//返回一个方法对象,该对象反映此类对象所表示的类或接口的指定已声明方法。 方法方法=class1.getDeclaredMethod (“mPrivate"); 方法method1=class1.getDeclaredMethod (“mProtected");//将此对象的访问标志设置为指示的布尔值。//值为真则指示反射的对象在使用时应该取消Java语言访问检查。//值为假则指示反射的对象应该实施Java语言访问检查。 method.setAccessible(真正的); method1.setAccessible(真正的);//调用该方法 method.invoke (tr); method1.invoke (tr); }以上就是Java反射获取实例的速度对比,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
Java反射获取实例的速度对比