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中反射机制浅析及应用

你可能喜欢

  • java反射机制
  • 深入浅出设计模式
  • 浏览器兼容性
  • Spring教程
  • Java反射
  • Java笔记
  • java泛型详解
  • java动态代理

JAVA中反射机制浅析及应用相关文档

最新文档

返回顶部