黑马程序员 反射的各种应用
来源:互联网 发布:9.9包邮淘宝u站 编辑:程序博客网 时间:2024/06/13 06:53
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
这篇总结了反射的概念和应用
1、概念
我们知道类就是对事物的属性和行为的抽象,而一个类也是事物,于是我们用了
一个叫Class的类对所有类的各种信息进行了抽象,基本所有的类都有如下
信息:ConstrutorInfo(构造函数)、MethodInfo(方法)、FieldInfo(字段)PropertyInfo(属性)、
EventInfo(事件)、MemberInfo(成员)、ParameterInfo(参数)。
反射具有动态发现类型信息的能力,可以把类中所有信息都映射成一个个不同的类(class),通过
这些类对象,就可以访问并操作这些类的类型信息
当每个类被加载之后,系统就会为之生成一个对于的Class对象,也就是class(字节码:类的各种信息),
类的类型信息也是用一个个的类描述,也对应相应的class文件,
总之反射就是把Class中的参数信息映射成对应的类对象并进行操作
2、应用
1、获取类的Class对象
1、使用Class类的静态方法forName(String name) name为某个类的全限定类名
2、调用某个类的class属性来获取该类的对应对象 String.class就是String的Class对象
3、调用某个对象的getClass()方法 getClass()是Object类中的方法,因此所有类都继承了这个方法
2、Class中常用的方法
getConstructor(Class<?>,...parameterTypes) 返回指定public的构造函数 parameterTyper为对应类型的字节码
getDeclaredConstructor(Class<?>,...parametertyper) 获得与访问权限无关指定参数的构造函数
Method getMethod(String 方法名,类型参数.class) 返回Class对象指定public 的方法
Method getDeclaredMethod(String 方法名,类型参数.class) 返回Class对象指定的方法
Field getField(String name) 返回Class对象指定的public field
Field getDeclaredField(String name) 返回Class对象指定的field
3、通过Class对象创建对应类的对象
1、使用Class对象的newInstance()创建该Class对象对应类的实例
注意:Class对象的newInstance方法中调用了默认构造方法
2、使用Class对象获取指定的Constructor对象,在调用Constructor对象的newInstance创建该Class对象对应类的实例
4、调用方法
当获得类对应的Class对象之后,就可以通过该Class对象的getMethod或getMethods来获得指定方法对象或所有方法对象数组,在Method对象中的包含一个invoke(Object obj,Object...args) obj是调用方法的对象,后面是调用传入的实参
5、访问属性值
通过Class对象的getField和getFields获取该类中对应的属性或全部属性,有如下两个方法操作属性
1、getXxx(Object obj)获取obj对象的Field属性值,Xxx表示的是8种基本类型,引用类型省略Xxx
2、setXxx(Object obj)同上
6、操作数组
在java.lang.reflect包下提供了一个Array类,Array对象可以代表所有的数组,程序可以通过下面方法创建并操作数组
1、static Object newInstance(Class<?>,int) 创建一个具有指定元素类型,指定长度的数组
2、static xxx getXxx(Object,index) 返回数组中下标为index的元素,Xxx为基本类型,引用类型就省略Xxx
3、static void setXxx(Object,index,xxx) 给数组指定下标项设置元素为xxx 引用也是省略Xxx
简单小运用:反射在泛型集合中的应用
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
- 黑马程序员 反射的各种应用
- 黑马程序员:反射的应用
- 黑马程序员-反射的应用
- 黑马程序员-反射的应用
- 黑马程序员 Java中反射的应用
- 黑马程序员--反射的理解应用
- 黑马程序员_java 反射的具体应用
- 黑马程序员_反射的应用
- 黑马程序员_反射的应用
- 黑马程序员_反射应用
- 黑马程序员-反射及应用
- 黑马程序员--反射具体应用
- 黑马程序员------java中的反射,beanutils,注解的应用。
- 《黑马程序员》基础加强---数组和反射的应用
- 黑马程序员—反射的机制及应用1
- 黑马程序员----反射机制的原理和应用
- 黑马程序员——反射的应用&Hashcode
- 黑马程序员:论反射的正确姿势以及应用范围
- 手机分辨率PPI和DPI的区别
- Learning Node.js - 知识收集
- Extjs显示图片
- 如何自己定制iOS框架(framework)
- loadrunner安装错误
- 黑马程序员 反射的各种应用
- C++指针
- IOS表情编码
- 数据库事务
- Linear dynamic texture
- Java并发编程6-final
- 和嘎哈施工法开始广发卡
- 值得充分的治疗
- Atlas源码剖析(十)