大话Java中的反射

目录

1、反射简介
2、反射作用
3、反射实现
4、反射操作泛型
5、动态编译

1、反射简介

       指的是可以在运行是加载、探知、使用编译期完全未知的类。反射机制可以在运行时动态的获取任意一个类的属性和方法,并可以对任意一个属性进行赋值,调用任意一个方法。(即便是私有方法,只要设置setAccessible)
2、反射作用

       把java类中的各种结构(方法、属性、构造器、类名)映射成一个个的java对象。利用反射技术可以对一个类进行解刨,反射是框架设计的灵魂。另外,反射是程序运行时需要的,可以利用反射机制、字节码操作获得类似动态语言的特性。
3、反射实现

       Class c=Class.forName(类路径(包括包名和类名))
       这里的Class是java.lang.Class,十分特殊,用来标识java中类型。
        注意:一个类只对应一个反射对象
        获取反射对象的其他方法:
       .class 获取反射对象
       String.class 获取String类的反射对象
        .getClass() 方法获取反射对象
       而在获得反射对象之后,可以进而过得相应反射对象中的属性、方法以及构造器。

	getFields()  只能获得public的field
	getDeclaredFields() 获得所有的属性field
	
	getDeclaredMethods() 获得所有的方法
	getDeclaredMethod(方法名称,参数类型)  根据指定方法名称与方法中的参数类型获得 方法信息
	如果方法有参数,则必须传递参数类型
	如果方法五参数,参数类型为null
	
	getDeclaredConstructors() 获得所有的构造器
	getDeclaredConstructor(类型...)  通过传递构造器中参数的类型来获得制定的构造器
	例:getDeclaredConstructor(int class, int class, int class);

       通过反射创建新的类示例,有两种方式:

	Class.newInstance() //此方法在最近版本的jdk已过时,如jdk1.9
	Constructor.newInstance() 

	Class.newInstance() 抛出所有由被调用构造函数抛出的异常。 
	Class.newInstance() 要求被调用的构造函数是可见的,也即必须是public类型的; 
	Constructor.newInstance() 在特定的情况下,可以调用私有的构造函数。 

       通过反射API动态调用方法:
在这里插入图片描述

       通过反射API操作属性

	User u4 = clazz.newInstance();
	Field f = clazz.getDelcaredField(“uname”);
	f.set(u4,”lf”); // 通过反射直接写属性
	Sytem.out.println(u4.getName());//输出结果一样 通过调用方法直接调用
	Sytem.out.println(f.get(u4));//输出结果一样 通过发射进行调用

       而如果uname是私有属性的话,上面操作就会报错,因为私有属性只有同一类才能访问,而其他类没有权限访问。
解决方法
       通过setAccessible(true) 声明该属性不用做安全检查,私有属性也可直接访问

	User u4 = clazz.newInstance();
	Field f = clazz.getDelcaredField(“uname”);	
	f.setAccessible(true);
	f.set(u4,”lf”);
	Sytem.out.println(u4.getName());//输出结果一样
	Sytem.out.println(f.get(u4));//输出结果一样

setAccessible:

       启用或禁用访问安全检查的开关。true:反射对象在使用时应该取消java语言访问检查。并不是为true就能访问,为false就不能访问。
       禁止安全检查,可以提高反射的运行效率。

4、反射操作泛型

在这里插入图片描述
5、动态编译
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大话Java性能优化》是一本关于提升Java应用程序性能的指南。这本书通过深入讲解Java程序的运行原理、关键性能指标和常见性能问题,提供了一系列实用的优化技巧和工具的使用方法,帮助读者更好地理解和应用性能优化的方法和技术。 首先,这本书详细介绍了Java程序的运行原理,包括Java虚拟机(JVM)的内部结构、垃圾回收机制、类加载和字节码执行等关键概念。通过深入了解Java运行机制,读者可以更好地理解性能优化的原理和方法。 其次,书重点讲解了常见的Java性能问题,并提供了对应的解决方案。作者通过实例和案例分析,指导读者如何寻找和修复内存泄漏、线程竞争、不合理的IO操作等常见问题,从而提升程序的性能和稳定性。 除了问题解决方案,这本书还介绍了一些性能优化的基本原则和技巧。例如,作者讲解了如何选择合适的数据结构、如何优化算法、如何合理使用多线程等。这些优化原则和技巧可以帮助读者在开发过程避免常见的性能问题,并提升程序的效率和响应能力。 此外,书还介绍了一些常用的性能优化工具和技术,如性能测试工具、代码分析工具和调优工具等。通过使用这些工具,读者可以对自己的程序进行性能测试和分析,并找出潜在的性能瓶颈。同时,书还介绍了一些常用的性能调优技术,如缓存技术、异步处理和负载均衡等,帮助读者优化自己的开发和运维流程。 总之,《大话Java性能优化》是一本从理论到实践都相当详细和实用的Java性能优化指南。通过学习这本书,读者可以更好地理解和应用Java程序的运行原理和性能优化技巧,提升自己的开发水平和应用程序的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值