JAVA中反射机制浅析及应用
JAVA中反射机制浅析及应用
维普资讯 www.mianfeiwendang.com
本目任辑:力栏责编王
. .. . . .计算机教育
JV A A中反射机制浅析及应用 王开,冀。兰江谭周 (昆明理工大学信 .工程与自动化学院,南昆明 6 0 5 ) E -云 5 0 1
摘要:反射 ( fcin机制是 J VA成为动态语言的一个关键特性, Re et ) l o A在运行中的 Jv aa程序对自身进行检查,或者说“内省” 1t— ( r no set n, Dco )并能直接操作程序的内部属性。这个机制允许程序在执行时可以通过反射 A I取得任何一个已知名称的类的信息,能在执 i Ps并行时改变类的成员变量 (e s的内客或执行方法 ( to s id fl ) me d) h 关键词:射机制;反内省;法;员变量方成
中图分类号:P 1 T 32
文献标识码: A
文章编号:0 9 34 ( 0 )1 12 5 0 1 0 -0 42 70- 0 5— 2 0 W A i A i HOU a-i g NG KaT N Y,, Z Ln j n a
An Ito u t n o c a im n piain o a a Reee t n nr d ci f o Me h ns a d Ap l t fJ v flci c o o
fau yo fr t nE g er gadAuo t nK n n ie i f c neadTeh o g,u mig6 0 5, ia Fcl fnomao ni ei n tma o,u migUn rt o i c n c n l yK n n 50 Ch ) t I i n n i v sy S e o 1 n A src:h fcinmehns iakyf mr ta mae aaahg y a c ag ae r gmn me aapo r b t t erl t c ai s e a e h t k v ihdnmi l u g. i t J v rga a T ee o m e J n Du n i mmeise ̄ ie pc tl n sf fk: t set n. dcnd et n u t teit l tiueo .h ca i o fc o lws rga met e mei oma o a .i r p co ) n a i cymai l e h e tb t ft emehns f eet nao orm ogt fr t n .an o i a r l p a n ma a r iT m rl i l p n i o y c s ih
h sas n tr r u h r f c o I, d c n c a g h ed rme o sd rn mpe n ai n t e f n l swh c a i au et o g e e t n AP s n a h n e t e f l s t d u i g i lme tt m - a a g h l i a i O h o a
K yWO: eme h ns o f c o;nr se t n M eh d Fed e  ̄STh c a i m f e et n Itop ci; to; ils rl i o
1引言 反射 (f ci )概念是由 S t在 18 r et n的 e l o mi h 9 2年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性
内部信息与反射 A I的对应关系如表 2所示 Ps 寰 1 。 Il C=对量获取途径=利用gt l。 e, ̄日方法 ( C每个粪郭有此方法) 示倒 ¥/ ̄ s” b’ 11 i ' i r= n c‘:
ca】哪: J, l韶c= g a c鼬O
的研究。它首先被程序语言的设计领域所采用,在 Ls并 i p和面向对象方面取得了成绩。 反射也已经成为了 Jv编程语言的特性。aa语言产生的最 aa Jv
利用静态 c啪 fr ̄ e方法( l o N o最常用的方法) C a = lsl sc 利用 C m语法 ln
寰2 对蚴 调明 c#所属的包 hs c s的修饰成 ls a 份
根本的目的是为了适应网络应用。Jv言中的反射机制的制定 aa语与实施。其本意是为了能够在网络中传递对象 .能够根据所传并递的对象信息 .构对象本身 .重因此这种重构是动态的。反射机制
为
蜩
■
pc ae a kg
g Pc g ) d a●《 A
Pa k臣 ca e 础
a s ̄t ht、 r i ̄fc、8 n nr e I“ t h a
gt d i ̄ e Mo iu O f Moie t l ̄ ( d i o r毗1 f r gt
对于 R C和 R ( P MI远程过程和远程方法调用)功能的实现起到了巨大的作用
Snn t g b otn o la
p b ̄ pv t簪 Lh、 r ae t i
Mo缸 l血“m《_】 m l gt ̄ e,a ' i l gty ̄a m t e p r tr T a e
c s
或 ls a ief e n r c的名粪或擤口的名称 t a 称
2J V中的类反射 A A J V中的类反射就是一个在当前 J中支持类、口和对 AA VM接象内省的小型的,型安全的和可靠的 A I它是通过 jv.ag类 P。 aa1n . rf c包提供的,以对类的能力进行分析。射使程序代码能够 e et l可反访问装载到 J M中的类的内部信息。主要包括获取已装载类的 V字段、法和构造函数的信息 .许编写处理类的代码 .些类是方允这
s蛐g TpV r b<ls[ ye a ̄l c s】 i e a>
c s梦j l s氍名称 T p fa s a ye n可 c拓基粪】 a B sc at h c实现的擤 s 口
g ue hs咄;pf sO c en tt l e。 g
Cs ls a %
c 5内夸粪 hs B
In l s t c s】 a O t s ue c s rh
g D c rd h g ) el ec s a 窖l∞ m g h e) I C s)
Cas l[ s】 C 5缸 C删 lI‘ (’ r c盯 T J
c s 外峨蹩 (对于内部粪 而言的)
在程序运行时临时确定的,而非源代码中事先选定的。这使反射成为构建灵活的应用的主要工具。 2 1“ l s类 . Ca” s
c 5构诰函j hs氍 c卵方法 h
cnl c r o ̄ut s r o me o t ̄ h
g n们0蛐州 ) 苷 gt t ( a . rm w ̄ c e ̄ nme a a Mc pa s ) g Mt os l t t dO ̄ ̄ h g i d n) e( e 1r g Fe暮 a i ̄0 l
c∞II o n删 M曲0 d
M曲。 印 F ed il
Jv的“ ls”是 Jv一个十分特殊的类。和其它类 aa中 Cas类 aa中它样继承自“ bet类, O jc”其对象用以表达 Jv程序运行时的类和 aa接口。当一个类被加载时, M便自动产生一个类对象。 J V 一
d s成员变量 as
id fl es
Fe[ id l】
“ l s是 Jv Ca” aa反射机制的起源。针对任何想探查的类。有 s只先为它产生一个“ ls” Cas对象 .下来才能由这个“ ls”象调用接 Cas对为数十多个的反射 A I。因此。用反射 A I动态访问某个类要 Ps利
Ps 经过以下三个步骤:
24获取类方法的简单例子 .通过上面所说明的反射 A I.以很方便的处理类信息。下 P宕可面的实例演示了如何找出一个类中定义了些什么方法 .是一个这非常有价值也非常基础的反射用法。例: p c a e my a k g; a k g P c a e
f1建一个“ l s对象: 1创 Ca” s
i p rjv .n . f c * m otaa1 g e et; a rl . p bi ls eMeh d u l casG t fo s c
f1用创建的“ l s对象获得类的内部信息; 2利 Ca” s ()用 jv. n . f c包中提供的反射 A I,态处理上~ 3利 aa1 g e et a rl Ps动步获得的类的内部信息。 22获取“ l s对象 . Ca” s在 Jv aa中可以有多种途径获取一个类的“ l s对象。表 l Ca” s如 所示。
{r a tu ci O jc P it ) ho sN l o t E cp p vt i nt n (bet,n trw ul i e x e— i e n f o1 X Pnr tn{ i o
i(:n l fp= u1 ) trw nw N l o t E cpin; ho e ul i e x et O Pnr o rtm x l eu;
p bi s t odma ( r g1 rs u l t i v i i S i[ag) c a c n tn { t{ r y
23类的内部信息与反射 A I的对应关系 . Ps通过获取的“ l s对象就可以动态获取类的内部信息。的 Ca” s类 收稿日期: 0 6 1 - 3 2 0— 1 2
Casc l l s s=CasoN me” y ak g.eMe os) ls.r a (m P c ae t t d” f G h;得类对象
//获
作者简介:开 (9 6,,南人。读研究生,要从事 J E王 17 ̄)男湖在主 2 E和分布式计算研究。

你可能喜欢
- java反射机制
- 深入浅出设计模式
- 浏览器兼容性
- Spring教程
- Java反射
- Java笔记
- java泛型详解
- java动态代理
- 深入浅出基于Java的代理设计模式4页
- 深入浅出Java设计之备忘录模式4页
- Head First Design Patterns(深入浅出设计模式)-目录14页
- Head First Design Patterns(深入浅出设计模式)-设计模式介绍25页
- 深入浅出学习Java设计模式之迭代器模式10页
- java培训-深入浅出Java三大框架SSH与MVC的设计模式5页
- 浏览器兼容性问题解决方法6页
- 浏览器兼容性问题4页
- 获取鼠标当前位置的浏览器兼容性2页
- 将div中checkbox信息赋值给文本框浏览器兼容性问题3页
- ie6,ie7,ie8,火狐浏览器兼容性1页
- 浏览器兼容性问题15页
- Spring MVC教程 映射处理器Handler Mapping8页
- Spring中文教程21页
- Spring AOP中文教程5页
- Spring入门教程23页
- Spring入门教程33页
- Spring 快速入门教程41页
- Java反射学习笔记整理16页
- Java反射20页
- Java的反射机制7页
- Java反射机制11页
- Java中的反射机制2页
- Java经典反射机制9页
- Java学习笔记26页
- Java工作笔记(必看经典)30页
- Java学习笔记8页
- Java基础学习笔记整理42页
- Java反射学习笔记整理16页
- 简明Java笔记29页


