一、什么是反射
Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。

二、反射能做什么
我们知道反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。那么我们便可以更灵活的编写代码,代码可以在运行时装配,无需在组件之间进行源代码链接,降低代码的耦合度;还有动态代理的实现等等;但是需要注意的是反射使用不当会造成很高的资源消耗!

三、获取Class的三种方式
- 使用
类的class属性获取对应的Class对象。 - 调用
对象的getClass()方法,返回该对象所属类对应的Class对象。 - 使用
Class类中的静态方法forName(String className),该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径。

四、反射获取构造方法并使用




例子:
调用多个参数的构造方法

调用单个参数的构造方法


五、反射获取成员变量并使用




例子:

六、反射获取成员方法并使用






例子:
方法有返回值

调用私有成员方法

六、反射之越过泛型检查
练习1:在ArrayList< Integer >集合中添加一个字符串数据。
反射可以获取到原始参数的方法,以越过类型检查。

七、反射之运行配置文件指定内容
练习2:通过配置文件运行类中的方法。


在class.txt文件中配置类名方法等内容。

本文详细介绍了Java反射机制的基本概念,包括如何获取Class对象、利用反射调用构造方法、成员变量及方法,以及反射如何帮助越过泛型检查和执行配置文件中指定的内容。通过这些内容,读者可以了解反射机制的应用场景及其潜在的性能影响。
1200

被折叠的 条评论
为什么被折叠?



