java反射
至于多的遇到了再说,因为这个部分似乎不是重点。
参考博客:
反射相关获取方式 :
- Field 类:提供有关类的属性信息,以及对它的动态访问权限。它是一个封装反射类的属性的类。
- Constructor 类:提供有关类的构造方法的信息,以及对它的动态访问权限。它是一个封装反射类的构造方法的类。
- Method 类:提供关于类的方法的信息,包括抽象方法。它是用来封装反射类方法的一个类。
- Class 类:表示正在运行的 Java 应用程序中的类的实例。
- Object 类:Object 是所有 Java 类的父类。所有对象都默认实现了 Object 类的方法。
四种获取方式:
- 获取 class 对象:(获取 class 对象基本使用
.forName
的格式。)
Class.forName("pkg")
(class)xx.class
reality.getClass()
每一个类只会生成一个 Class 对象。
- 获取成员变量:
.getDeclaredFields
,获取所有的变量使用.getFields
,获取所有公有的字段使用
- 获取构造方法:
.getDeclaredConstructors()
.getConstructors()
- 获取其他方法:
- 获取所有声明的非构造函数的
getDeclaredMethods
- 仅获取公有非构造函数的
getMethods
什么是反射 ?
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。
反射有什么作用 ?
- JDBC 中,利用反射动态加载了数据库驱动程序。
- Web 服务器中利用反射调用了 Sevlet 的服务方法。x
- Eclispe ,IDEA等开发工具利用反射动态刨析对象的类型与结构,动态提示对象的属性和方法。
- 很多框架都用到反射机制,注入属性,调用方法,如 Spring。
优缺点
- 优点:可以动态执行,在运行期间根据业务功能动态执行方法、访问属性,最大限度发挥了 java 的灵活性。为各种框架提供开箱即用的功能提供了便利。
- 缺点:对性能有影响,这类操作总是慢于直接执行 java 代码。
可以去看相关的博客。