没有合适的资源?快使用搜索试试~ 我知道了~
Java反射机制总结,都是我个人自学笔记
资源详情
资源评论
资源推荐
J
J
J
J ava
ava
ava
ava 反射机制 文章集合
关键字: Java
Java
Java
Java 反射 Class
Class
Class
Class
由 “ 彭益存 ” 从网络整理
Email:
Email:
Email:
Email: yicun05@software.nju.edu.cn
yicun05@software.nju.edu.cn
yicun05@software.nju.edu.cn
yicun05@software.nju.edu.cn
pengyicun05@163.com
pengyicun05@163.com
pengyicun05@163.com
pengyicun05@163.com
2009/03/25
2009/03/25
2009/03/25
2009/03/25
目录
1. Java 反射机制
2. 谈 java 反射机制
3. Java 反射机制
4. Java 集合浅析
5.
Java 的类反射机制
6. Java 反射机制的学习
7. Java 反射 Reflection-- 运行时生成实例
8. Java 反射机制
9. Java 反射机制
2
10.
Java 反射机制(转)
注意
:
所有文章均从网络途径获得,本人只作收集整理的工作,个别地方有改动。每篇文 章
的标题遵循原作者的表述,本人不再作任何更改。
J ava 反射机制
反射的概念
反射的概念
反射的概念
反射的概念 :
:
:
:
反射的概念是由 Smith 在 1982 年首次提出的,主要是指程序可以访问、 检测和修改它本身 状
态或行为的一种能力。 这一 概念的提出很快引发了计算机科学领域关于应用反射性的研究
。
它首先被程序语言的设计领域所采用 , 并在 Lisp 和面向对象方面取得了成绩。其中
LEAD/LEAD++ 、 OpenC++ 、 MetaXa 和 OpenJava 等就是基于反射机制的语言。最近,反
射机制也被应用到了视窗系统、操作系统和文件系统中。
反射本身并不是一个新概念, 它可能会使我们联想到光学中的反射概念, 尽管计算机科学 赋
予了反射概念新的含义,但是,从现象上来说,它们确实有某些相 通之处,这些有助于我
们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,
这类应用通过采用某种机制来实现对自己行为的描 述( self-representation )和监测
( examination ) ,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相
关 的语义。可以看出,同一般的反射概念相比,计算机科学领域的反射不单单指反射本身
,
还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统) 都希望使系统
的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不 一
定采用了反射机制,开放性是反射系统的必要条件。一般来 说,反射系统除了满足开放性
条件外还必须满足原因连接( Causally-connected ) 。所谓原因连接是指对反射系统自描述的
改变能够立即反映到 系统底层的实际状态和行为上的情况,反之亦然。开放性和原因连接
是反射系统的两大基本要素。 13700863760
Java 中, 反射是一种强大的工具。 它使您能够创建灵活的代码, 这些代码可以在运行时装
配,
无需在组件之间进行源代表链接。反射允许我们在编写与执 行时,使我们的程序代码能够
接入装载到 JVM 中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为
构建灵活的应用的主要工具。但需注意的 是:如果使用不当,反射的成本很高。
Java
Java
Java
Java 中的类反射:
中的类反射:
中的类反射:
中的类反射:
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查
,
或者说 “ 自审 ” ,并能直接操作程序的内部属性。 Java 的这一能力在实际应用中也许用得不
是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如, Pascal
、
C 或者 C+
+
中就没有办法在程序中获得函数定义相关的信息。
1
1
1
1 .检测类:
1.1
1.1
1.1
1.1 reflection
reflection
reflection
reflection 的工作机制
的工作机制
的工作机制
的工作机制
考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。
import java.lang.reflect.*;
public class DumpMethods {
public static void main(String args[]) {
try {
Class c = Class.forName(args[0]);
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
System.out.println(m[i].toString());
} catch (Throwable e) {
System.err.println(e);
}
}
}
按如下语句执行:
java DumpMethods java.util.Stack
它的结果输出为:
public java.lang.Object java.util.Stack.push(java.lang.Object)
public synchroniz ed java.lang.Object java.util.Stack.pop()
public synchroniz ed java.lang.Object java.util.Stack.peek()
public boolean java.util.Stack.empty()
public synchroniz ed int java.util.Stack.search(java.lang.Object)
这样就列出了 java.util.Stack 类的各方法名以及它们的限制符和返回类型。
这个程序使用 Class.forName 载入指定的类,然后调用 getDeclaredMethods 来获取这个类
中定义了的方法列表。 java.lang.reflect.Methods 是用来描述某个类中单个方法的一个类。
1.2
1.2
1.2
1.2 Java
Java
Java
Java 类反射中的主要方法
类反射中的主要方法
类反射中的主要方法
类反射中的主要方法
对于以下三类组件中的任何一类来说 -- 构造函数、字段和方法 -- java.lang.Class 提供四 种
独立的反射调用,以不同的方式来获得信息。调用都遵循一种标准格式。以下是用于查找 构
造函数的一组反射调用:
l Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构
造函数,
l Constructor[] getConstructors() -- 获得类的所有公共构造函数
l Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构
造函数 ( 与接入级别无关 )
l Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数 ( 与接入级别无
关 )
获得字段信息的 Class 反射调用不同于那些用于接入构造函数的调用, 在参数类型数组中 使
用了字段名:
l Field getField(String name) -- 获得命名的公共字段
l Field[] getFields() -- 获得类的所有公共字段
l Field getDeclaredField(String name) -- 获得类声明的命名的字段
l Field[] getDeclaredFields() -- 获得类声明的所有字段
用于获得方法信息函数:
l Method getMethod(String name, Class[] params) -- 使用特定的参数类型, 获得命 名
的公共方法
l Method[] getMethods() -- 获得类的所有公共方法
l Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,
获得类声明的命名的方法
l Method[] getDeclaredMethods() -- 获得类声明的所有方法
剩余99页未读,继续阅读
wang_ming_he
- 粉丝: 0
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0