反射--反射机制的深入研究
来源:互联网 发布:健身器材什么牌子 知乎 编辑:程序博客网 时间:2024/05/21 11:01
一,本章目标
使用反射调用类中的指定方法
使用反射完成setter和getter方法的调用
使用反射直接操作类中的属性
使用反射操作数组
二,具体内容
2.1通过反射调用类中的方法
正常情况下,一个类的对象产生后就可以直接调用类的方法。如果想调用的话,则肯定必须清楚地知道要调用的方法名字是什么,之后通过Class类中的
public Method getMethod() 方法得到一个方法的MMethod对象,之后通过此Method对象执行方法,但是在方法调用的手会牵扯到参数问题,所以使用getMethod方法的时候必须指定好参数。
实例操作:调用Person类中的sayChina方法(使用Method类中的invoke方法可以执行方法)
如果方法中存在参数,则必须设置参数类型。
2.2 调用setter和getter
setter和getter方法是一个标准的属性访问方法,如果一个类的属性被封装,则必须通过setter和getter方法来设置和获取,实际上此方法之所以被这样规定,主要是因为由于反射机制可以给予支持,通过反射调用setter和getter。
2.3 操作属性
操作一个类,可以通过Field类来操作。
public Field getField() - -----------》得到公共属性
public Field getDeclareField --------------->得到本类属性
public Object get() -----------》取得属性
public Object set() --------------》设置属性内容
在访问私有化属性的时候,必须设置这个属性可见
public void setAccessible(boolean flag)throws SecurityException
将其内容设置为true。
以上的操作不需要setter和getter方法制成,即使没有这两个方法, 也能完成功能。
2.3通过反射操作数组
反射机制不光可以使用在类上,也可以使用在任意的引用数据类型上。
Class类中存在一个方法:public Class<?> getComponentType() 返回一个数组
public static Object get(Object array,int index) 得到数组指定下标的内容
public static void set(Object arrya,int index) 修改指定下标的内容
public static Object newInstance(Class<?> componetnTyep,int . . . dimensions) 开辟新数组
操作实例:
取得数组信息并修改数组内容:
使用Array可以修改数组的大小。修改实际上是创建,创建一个新的数组,把久的内容拷贝到新数组中。
三,总结
重点理解set和get方法的调用问题,原理
不建议直接使用反射修改属性
- 反射--反射机制的深入研究
- 【Java反射机制】_Java反射机制的深入研究笔记
- 【Java反射机制】_Java反射机制的深入研究笔记
- Java 反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java 反射机制深入研究
- Java 反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java 反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java 反射机制深入研究
- Java反射机制深入研究
- 简书文章阅读量之小漏洞
- OpenCV创建高斯滤波器在频域
- Android百度地图(清除多个Marker时,onMarkerClick方法执行多次)
- Mac搭建本地svn服务器
- InnoDB存储引擎--4、数据库备份
- 反射--反射机制的深入研究
- mybatis绑定错误
- Optimization Algorithm
- 剑指offer 第三章 高质量的代码
- char和byte的区别
- HDU
- 先进先出缓存算法(FIFO)--java实现
- form表单中method的get和post区别
- MySQL XA事务