Java反射总结
来源:互联网 发布:东莞东莞菲凡网络 编辑:程序博客网 时间:2024/06/02 02:13
能够分析类能力的程序成为反射(reflective),反射机制可以用来:
1. 在运行中分析类的能力
2. 在运行中查看对象
3. 实现通用的数组操作代码
4. 利用Method对象。
一、 Class类
在程序运行期间,Java运行时系统(JRE)始终为所有的对象维护一个被称为运行时的类型标识。这个信息跟踪着每个对象所属的类,虚拟机利用运行时类型信息选择相应的方法执行。
可以通过专门的Java类访问这些信息,保持这些信息的类被称为Class。 ——《Java核心技术 中文第九版 卷一P193》
查看Class的源码可以发现,该类在JDK1.0时就存在了,它还链接到ClassLoader类中。其实一个类在被虚拟机加载到内存时,在线程共享的方法区中就生成了这个类的Class引用。
clazz.getName()方法(实例方法)返回Class对象关联的类的名称,有一些返回的name很奇怪比如:
- int[].getClass().getName()返回的是[I
- Double[].getClass().getName()返回的是[Ljava.lang.Double
- Integer[].getClass().getName()返回的是[Ljava.lang.Integer
- long[].getClass.getName()返回的是[J;
Class.forName(String)方法(静态方法)返回指定名称(类的全限定名)的类的Class实例;
- clazz.newInstance()(实例方法)返回一个Class对象关联的类的实例,实际上是调用类的无参构造器;
- clazz.getFields()返回一个包含Field对象的数组,这些对象记录了这个类和其父类的公有域;clazz.getDeclaredFields()返回了该类的所有域,不包括其父类;
- clazz.getMethods()返回该类及其父类的所有公有方法;clazz.getDeclaredMethods()返回该类的所有方法;
- clazz.getConstructors()返回该类及其父类的所有公有构造器;clazz.getDeclaredConstructors()返回该类的所有构造器;
7.clazz.getComponentType(),如果clazz是数组的Class对象,返回该数组的类型。
二、Filed、Method、Constructor、Modifier、AccessibleObject、Array等常用类
1. Filed、Method、Constructor常用方法:
Class getDeclaringClass():返回关联的Class对象
int getModifiers():返回一个修饰符对于的整型数值,如public=1,private=2
String getName():返回描述名称的字符串
Constructor和Method类:Class[] getParameterTypes():返回用于描述参数类型的Class数组
Method类:Class getReturnType():返回用于描述方法返回类型的Class对象;public Object invoke(Object obj, Object… args):调用方法,第一个参数是method所属的类的实例,第二个参数是method所需的参数列表。
2. Modifier:
static String toString(int modifiers):返回modifier对应的修饰符的字符串标识
static boolean isPublic(int modifiers):返回是否为public修饰符
。。。
3. AccessibleObject:
void setAccessible(boolean flag):为反射对象设置可访问标识,true表示屏蔽Java语言的访问检查,使得对象的私有属性也可以get和set
boolean isAccessible():返回对象是否可访问标识
static void setAccessible(AccessibleObject[] array,boolean flag):批量设置对象数组可访问标识
4. java.lang.reflect.Array
static int getLength(Object) 获取数组对象的长度;
static Object newInstance(Class
- 【Java】Java反射总结
- java反射总结
- java 反射 总结
- java 反射 总结
- java 反射 总结
- java 反射 总结
- java 反射总结
- JAVA 反射学习总结
- java 反射知识总结
- java 反射知识总结
- Java-反射总结
- JAVA 反射总结
- java中的反射总结
- Java反射机制总结
- Java总结(16)反射
- java反射总结
- Java反射学习总结
- java反射机制总结
- IOS推送消息(java实现)
- Chrome下强制http重定向到https的问题
- Character Data Types
- 数据结构资料中栈的两个应用
- SVN中trunk,branches,tags用法详解
- Java反射总结
- RecycleView监听实现
- C/C++程序编译步骤 如何生成可执行文件
- 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件
- 异常
- 安全协议IPSec、SSL、SSH
- phpmyadmin安装记录
- inet_ntoa函数陷阱
- 简单的RPC实现