当前位置: 首页 > news >正文

2昌平区网站建设核心关键词如何优化

2昌平区网站建设,核心关键词如何优化,广西建筑工程有限责任公司,海东营销网站建设反射反射机制反射调用优化有时候我们做项目的时候不免需要用到大量配置文件,就拿框架举例,通过这些外部文件配置,在不修改的源码的情况下,来控制文件,就要用到我们的反射来解决 假设有一个Cat对象 public class Cat …

反射

    • 反射机制
    • 反射调用优化


有时候我们做项目的时候不免需要用到大量配置文件,就拿框架举例,通过这些外部文件配置,在不修改的源码的情况下,来控制文件,就要用到我们的反射来解决

假设有一个Cat对象

public class Cat {private String name = "招财猫";public void hi(){System.out.println("hi "+name);}
}

传统调用方法

public class ReflectionQuestion {public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {//传统的方式 new 对象 -》 调用方法Cat cat = new Cat();cat.hi();}
}

现在有一个配置文件

classfullpath=Reflection.com.hspedu.Cat
method=hi

反射调用

/反射问题的引入
public class ReflectionQuestion { 
//1.使用Properties类,可以读写配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\Reflection\\re.properties"));String classfullpath = properties.get("classfullpath").toString();String method = properties.get("method").toString();//使用反射机制来解决//(1)加载类,返回Class类型的对象Class cls = Class.forName(classfullpath);//(2)通过 cls 得到你加载的类 com.hspedu.CatObject o = cls.newInstance();System.out.println("o的运行类型="+o.getClass());//(3)通过 cls 得到你加载的类 Reflection.com.hspedu.Cat 的 methodName 的方法对象//即: 在反射中,可以把方法视为对象(万物皆对象)Method method1 = cls.getMethod(method);//(4)通过method1 调用方法:即通过方法对象实现调用方法System.out.println("=========================");method1.invoke(o);}
}

运行结果:
在这里插入图片描述
反射的强大之处就是可以在外部文件上不修改源码的情况下来控制程序


反射机制

反射机制允许程序在执行的时候借助我们Reflection API取得任何类的内部信息,并且能操作对象的属性及方法。反射在设计模式和框架底层都会用到
(一个类只有一个Class对象),这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,形象的称之为:反射
解释

//反射问题的引入
public class ReflectionQuestion {public static void main(String[] args) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {//1.使用Properties类,可以读写配置文件Properties properties = new Properties();properties.load(new FileInputStream("src\\Reflection\\re.properties"));String classfullpath = properties.get("classfullpath").toString();String method = properties.get("method").toString();//使用反射机制来解决//(1)加载类,返回Class类型的对象Class cls = Class.forName(classfullpath);Class cls2 = Class.forName(classfullpath);System.out.println(cls.hashCode());System.out.println(cls2.hashCode());}
}

运行结果:
在这里插入图片描述
可以看出来他们指向同一个对象
在这里插入图片描述
java反射机制可以完成

1.在运行时判断任意一个对象所属的类
2.在运行时构造任意一个类的对象
3.在运行时得到任意一个类所具有的成员变量和方法
4.在运行时调用任意一个对象的成员变量和方法
5.生成动态代理


反射调用优化

优点:可以动态的创建和使用对象(也是框架底层核心),使用灵活,没有反射机制,框架技术就会失去底层支持
缺点:使用反射基本是解释执行,对执行速度有影响

public class Reflection02 {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {m1();m2();}//传统方式来调用hipublic static void m1(){Cat cat = new Cat();long start = System.currentTimeMillis();for(int i=0;i<90000000;i++){cat.hi();}long end = System.currentTimeMillis();System.out.println("传统方法来调用hi 耗时="+(end-start));}//反射机制调用方法hipublic static void m2() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {Class cls = Class.forName("Reflection.com.hspedu.Cat");Object o = cls.newInstance();Method hi = cls.getMethod("hi");long start = System.currentTimeMillis();for(int i=0;i<90000000;i++){hi.invoke(o);}long end = System.currentTimeMillis();System.out.println("反射方法来调用hi 耗时="+(end-start));}
}

运行结果:
在这里插入图片描述
差距这么大有什么方法优化吗

//反射调用优化 + 关闭访问检查public static void m3() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {Class cls = Class.forName("Reflection.com.hspedu.Cat");Object o = cls.newInstance();Method hi = cls.getMethod("hi");hi.setAccessible(true);long start = System.currentTimeMillis();for(int i=0;i<90000000;i++){hi.invoke(o);}long end = System.currentTimeMillis();System.out.println("反射方法来调用hi 耗时="+(end-start));}

在这里插入图片描述

http://www.yayakq.cn/news/433694/

相关文章:

  • 抚州临川网站建设京东网站项目建设规划书
  • 营销型网站模版青山网站建设
  • 网站建设课程设计网站建设用到的工具
  • 广丰网站seo阿里云服务器报价
  • 唐山 网站建设做网站如何保证询盘数量
  • 内蒙古自治区建设厅网站wordpress新建用户组
  • 广东seo网站推广企业网站服务门户
  • 24小时学会网站建设 pdf下载wordpress 去掉自豪
  • 台州市城乡建设局网站北京网站优化团队
  • js源码下载从哪个网站能下载网站备案 个人组网方案
  • 群晖做网站服务器会卡吗温州做网站的企业
  • 固原市住房和城乡建设局网站做母婴用品的网站有哪些
  • 正规网站建设房产信息门户网站建设方案
  • 仙游县网站建设wordpress 获取有图片的文章
  • 营销型高端网站建设价格群辉wordpress阿里云ssl
  • 怎么创建图片网站wordpress主页音乐
  • 如何做电子书下载网站汽车网站建设的目的
  • eclipse网站开发实例福建漳州东山建设局官方网站
  • 移动 网站模板外贸电商怎么做
  • 如何做好购物网站5昌平区网站建设
  • 国内知名网站建设企业怎么创建万维网网站
  • 分类信息网站如何做排名中国有哪些建筑公司
  • 长春建站培训班企业微信小程序制作
  • 企业网站的开发流程是什么专业企业网站建设公司价格
  • 网站建设的要求有哪些方面平面设计相关的网站有哪些
  • 南通影楼网站建设可以加速浏览器的加速器
  • 温州网站开发wordpress本地上传服务器
  • wordpress小说网站模板下载湖南建筑信息网平台
  • 经营网站 备案wordpress 线条不显示
  • 后台网站怎么做视频asp做网站的缺点