12_Java類加載機(jī)制與反射_第1頁
12_Java類加載機(jī)制與反射_第2頁
12_Java類加載機(jī)制與反射_第3頁
12_Java類加載機(jī)制與反射_第4頁
12_Java類加載機(jī)制與反射_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1 2 . 1 J ava類加載機(jī)制。前而我們給大家介紹過J VM得功能(提供運(yùn)行時環(huán)境、垃圾回收機(jī)制與提供中立得體系結(jié) 構(gòu)九在提供運(yùn)行時環(huán)境中有個子功能就是Class Load e r(類加載器),它主要用于將主類(即 包含了mai n方法得類)加載到JVM得code s egment (代碼區(qū))。然后運(yùn)行環(huán)境找 到main方法(程序入口)開始執(zhí)行程序.在整個程序運(yùn)行得過程中,會有更多得cla $ s被動 態(tài)Load到內(nèi)存中。類加載機(jī)制如圖12-1所示:圖12-1類加載機(jī)制需要注意得就是:類并非一次性就全部加載完畢,而就是在需要得時候(運(yùn)行期間)動 態(tài)加載到內(nèi)存。ava-verbose:cl

2、ass Test 以觀察類得具體加載過程。12a 2 Java反射機(jī)制什么就是反射Java程序在運(yùn)行期間可以動態(tài)加載、解折與使用一些在編譯階段并不確左得類型數(shù) 據(jù),這一機(jī)制被稱為反射(Reflection).反射庫(refle c t ion libra r y)提供了一個非常豐富 且精心設(shè)計(jì)得工具類,以便編寫能夠動態(tài)操縱J a va代碼得程序。使用反射,在設(shè)訃與運(yùn) 行中添加新類時,能夠快速得應(yīng)用開發(fā)工具動態(tài)得査詢新添加類得能力。反射方式取得實(shí)例化對彖反射方式:實(shí)例化対象正勸式:引入需要的“包類呀稱:彳過new實(shí)例化) gelClassO方法 I 得到芫g的包.類咯稱反射機(jī)制提供得功能-加載運(yùn)

3、行時才能確1得數(shù)據(jù)類型解析類得結(jié)構(gòu)、分析類得能力、獲取其內(nèi)部信息操作類(進(jìn)行實(shí)例化訪問非靜態(tài)成員,直接利用類名訪問靜態(tài)成員)或其實(shí)例(訪問 屬性、調(diào)用方法、創(chuàng)建新對象)1 2。2。1 Cla S S 類。在程序運(yùn)行期間,Java運(yùn)行時系統(tǒng)始終為所有得對象維護(hù)一個被稱為運(yùn)行時得類型標(biāo)識, 被稱為C la $ $ (注意與class得區(qū)別九通過Class可以完整得得到一個類中得完整結(jié) 構(gòu),包括此類中得方法泄義,屬性定義等-Class就是反射得源頭或入口,通過査瞧JDK幫助 手冊幷常見方法如圖:Class類的常用方法No.類型描述1public static Cl3ss forNamefStrlng

4、 className) throws ClassNolFou nd Exception普通傳入芫整的“包類-宅稱實(shí)例化 Oa$s對象2pubHc Construclof getConstructorsQ throws SecurityException普通得到一個矣中的全部構(gòu)港方法3pubEc FeldJ getDedaredFieldsf) throws Securit/Exception得到一個類父類中的全部屬性4pubSc Field getFieldsi) throws SecurityException普通鍛7檔本類的全部屬性5pubBc Method getMelhodsO thr

5、ows Securitytxception普通得別一個類中的全劑方法6pubBc Method getMethod(String n3me,Class. pafameterTypes) throwsNo5uchMethodExcep1ion,5ecuritvExcepTion普通返回一個Method劉象,并沒置一 個方法中的所有參數(shù)類型7pubEcClass getlntefFaces普通得到一個矣中所實(shí)現(xiàn)的全部接匚8public String getNameJ普通得別一個類完整的”包類”名:稱9public Package getPackagef)普逋得到一個類的包10pubHc Clas5

6、 gotSuperclassO普通毎到一個矣的父類11pubBcT newinst合th rowsInstantiationExce pUonneg9lAcc6sException普逋根Qass 5e義的類實(shí)例化對象12p ubSc Cla$s getComponentTypeO普通返回稅示數(shù)組類型的as13public boole an isArrayO判浙此Class是否是一個數(shù)組122o 2如何獲取Class類對象12. 2. 2. 1針對引用數(shù)據(jù)類型通過 Class L oade r 得 1 oadClass 方法C I a s s cl = Clas s Loade r、gets y

7、 s t e mClass Loader。、load Cla s s C i t j 0 b、 P er s on):調(diào)用靜態(tài)方法Class、f orNameOClass、fo rNameC、job. Person):Class、f 0rName Co rac 1 c、jdbc、d i rv r、Orac 1 eDri ver;調(diào)用Obje c t類中定義得getCI a ss()方法():Per s on p = n e w Pc r s onCl a ss cl = p、get C lass():t C I ass ();C 1 ass c 2 = F e H o J g e使用、clas

8、s表達(dá)式Cla s scl = Str i ng、cla ss:class;Ora cleDriver class;C 1 a s s c 2 =、iljob、Person、Classc3 = oracle、jdbe. dirver.12c 2. 2、2針對基本數(shù)據(jù)類型及VO i d使用、c 1 ass表達(dá)式C 1 a s scl = int、class:Clas s c2 = d 0 u b Ic. c 1 as $ :C I ass c3 = V 0 i d . c 1 ass:調(diào)用相應(yīng)封裝類得Type屬性Cl a ss cl = Int e ge r、TYPE:Cl a ss c 2 =

9、Doublc、TYPE:Class c3 = Voi d、TYPE:。示例如下:try -/K引用數(shù)據(jù)類型。/KI利用ClassL 0 ader類得loaderClass ( ”類全名稱);手動加載,會有異常System、out、prinUn(Cl a ssLoadcr、ge t S y siemC 1 assLoader (load Class(”、iljob、Person* )、g e tN a m e ();。/1、2利用ClassX forName (:類全名稱);手動加載,會有異常SysienK out、printl n (C lass fbrNamef it j o b x Per

10、son)、gel N am e ();41、3調(diào)用Object類中楚義得sctcias$()方法bSystem、o ut、printl n new P e rson(、getC lass ()、getName();。/ 1、4使用、class表達(dá)式8 System、out、p r intln(Pcr s on、class、g e tName(): /2、基本數(shù)據(jù)類型與void3/2、1使用、class表達(dá)式3 Sy $ I e m、out、pri n tln( i nt. clas s、gc t Name C);0Sys t e iiK out. println(doub I c、class、

11、g e tN a me();zSys t cm、0 ut、prin t In (voi d . c I a ss、get Name (): /2、2 通過齊自得包裝類、TYPESystemou t、prin t Indnteg e TYPE):0Systemout、pr i nUn (Double、TYPE): cat c h (Clas s NoiFound E xce p lion e) Q 代、prin iStackTraceO:122 3獲取實(shí)例對象。不光可以取得對象所在類得信息,也可以宜接通過Class類得n e W I n sianc e方法進(jìn)行 對象實(shí)例化操作e win s t

12、ance方法原型如卜:p ublic T newinsta nee () th r o ws I n st a ntiatio n Exc e ption,I 1 lega 1 AccessExcept I o n4調(diào)用過程:p、getC 1 as s (). n e w I n st a n c e ():或:Person、class、n e winstance ():或:Class、fo r Nainc ( ”、iljob Perso n”)、ne w 1 nstance 1 a ng、r e fleet. Cons t rue t or java、Ian g r e fie c t s

13、Modi f i e rj a va、Ian re f 1 ect Ar r ay12。2。4、1獲取類實(shí)現(xiàn)得所有接口要想取得一個類所實(shí)現(xiàn)得全部接口,則必須使用Class類中得getint e rfacesf)方法。此 方法立義如下:Publ i c Clas s g e tl n terface s ().因?yàn)橐粋€類可以同時實(shí)現(xiàn)多個接口,因 此此方法返回一個C 1 a$s類得對象數(shù)組,之后就可以直接利用Class類中得gciNamc()方 法輸岀即可.示例如F:i n t erf a ce A (i n t er f ace B class Person implements A,B p u

14、 blic cl a s s Tes t dpublicstatic void ma in(S t ring args) CI a s s c = Pe rso IK elas s . getint e rfa c es (); fo r (Cl a s s cc : c) System、out、p rintln ge t Name ();12. 2. 4、2獲取類所繼承得父類一個類可以實(shí)現(xiàn)多個接口,但就是只能繼承一個父類,如果沒有明確得指明繼承那個類, 則肯楚繼承得就是Object類。所以要想取得一個類得父類,可以直接使用CI a $s類中得 getSup e rclass ()方法。此方法

15、定義如下:p ublic Class ? super T) getSuperclas s ().此方法返回得就是Class實(shí)例,與之前得到接口一樣,叮以通過getName()方法取 得需稱。示例如下:class A clas s Person extends A p ub 1 i c class Test opu b lie s tatic v o id main(String a r g s ) Sysicm. out、p rint I n ( Rers o n、c 1 ass getSupcrcla s s ()、geiN a me):12。2.4. 3獲取類中得全部構(gòu)造方法可以宜接使用C

16、 lass類中得g e t Co n s tr u ctors()方法或g e tDe c la r e d C onsiructors ()方法取得本類中得全部構(gòu)造方法。這兩個方法得返回類型都就是Const r u cto r得數(shù)組。Con structor類世義在java、lang、re f lect包中,常用方法如下:Constructor類的常用方法No.類型播述1pubic intgetModlfiersQ普iS得到構(gòu)適方法的修飾符2pubkc String getName()苦通御到購it方法的名稱3pubic Classj getParamewfTypesO普通得社構(gòu)譴方怯中參數(shù)

17、的類型4pubEc String toStringO晉通返回此構(gòu)造方法的僖息5pubtcT newlnstance(Object. initargs) throwsInstantiationException, lllegslAccessExcepton, lilegalArgumentException, 1 n vocati on Tar getExc eption普通向構(gòu)造方法中伎遞參數(shù),實(shí)例化取得訪問修飾權(quán)限得時候卻發(fā)現(xiàn)返回得就是一個ini數(shù)字而不就是public等類型得修 飾符關(guān)鍵字。這就是因?yàn)樵谡麄€Java中對于方法得修飾符就是使用一頂?shù)脭?shù)字表示出來得, 如圖所示:java.lan

18、g,reflect.Modifier 中訪問修飾符的值No.訪問修飾符int值1default02public13private24protected45static86final167synchronized32采用二迭制來對各個訪問修飾符 進(jìn)行賦值,這樣可以確保任何的 訪問修飾符迅合,梅加得到的int 值是唯一的d例如J public static fin3l=l+8+16=25描述如果要想把這個數(shù)字還原成用戶可以瞧懂得關(guān)鍵字.則必須依靠Modi fier類完成, 此類泄義在ja V a、lang, re fie c t包中.直接使用Modif i er類得以下方法即可將修飾符轉(zhuǎn) 變:pu

19、b 1 icsta t ic S tring t oStrin g( i nt mod);示例如下:import java、la ng、re f 1 ect、*:cl a ss Pe r so n private Siring name;p r i vate int ag e ;pub 1 i c Person C) pubI i cPcrson(String name, i nt age) t h i Ss n am e = name:I h is、ase = as e;Overri d ed p ub 1 ic St r i n g loStri n g() / TOD 0 Aut 0 -

20、genera t ed meth o d s lu breturn ” 我叫+ this、name + :我今年” + t his、age;publ i c c 1 ass Tes t opublic s ta t i c voi d ma i n(Stri n g args) /獲取所有得構(gòu)造方法JConstruct o r c s = Person class、geiDeclaredC o nstructors (): for(Co n st r uctor c : cs) “/遍歷所有得構(gòu)造方法-/輸出構(gòu)造方法得修飾符0 Sys t e iiK out、prinUn(” 構(gòu)造器修飾符:”

21、+ Mod i fi r、toSi r i n g(c、getModi f ier s ();/輸出構(gòu)造方法名稱dS y stem、0 ut. p rint 1 nC 構(gòu)造方法名: + c、gc t N a me ():/輸出構(gòu)造方法所有參數(shù)QI a ss c t ( =c、getParamet e rTyp e s C):3 if( c t、1 e n s th = 0 )60 S y s I e m、o ul、p r i n tin (”這就是無參得構(gòu)造方法”);“cl s e i n t i = 0;of 0 r (Classv? p : ct)(g Sysicm、OU t、pri n

22、tin ( ” 參數(shù)+ (i+ I )+ p. g etNam e ();現(xiàn)在我們己經(jīng)知逍如何獲取一個類得所有構(gòu)造方法規(guī)范,此時我們可以利用Const r uctor類得newl n st a nee調(diào)用有參得構(gòu)造方法來實(shí)例化對彖,其過程如下:1 r 通過C 1 ass類中得 getConstru ctors ()方法或 ge t DeclaredCon s tnicto r s()取得本類中得全部構(gòu)造方法.2、分析每個構(gòu)造方法得參數(shù)情況,了解每個構(gòu)造方法得原型.3、通過Class 類中得 ge t De C laredConst rue tor(C 1 ass、八 paramete rTy

23、pes)方法,向構(gòu)造方法中傳遞一個對象數(shù)組進(jìn)去,里面包含了構(gòu)造方法中所需得各個參數(shù).4 通過調(diào)用 Con structor 得 n e win s t a n c e(Obje c ti nitargs)方法 實(shí)例化對象。示例如卜:try ass.Co n st r uctor (? c = Per s on class、get Decl a redConstructor(Str i ng c 1 in仁 class):out、Sy s t cm、out、p r in t ln( c n e wl n s lance(張三 25); c atch (Il 1 egal A r gumentEx

24、 c e p t i on e) 6e、printStackTra ce (); C a t ch (Install t ia t ionExc e ption e) o p r intSt a ck T race (); c a t c h (Illeg a 1 AccessExcept i on e) e、prill t S t ackT r a c e ():) c ai c h (Invoc a t i onTa r g e tE x c e pt i on e) 代、printSta c kTracc ();c a tch (Sec u r i t y Exce pli on el)

25、 cl、prinlStackTrace(); catch (No Such MethodEx c e ption e 1 ) del、prints t a c kTraceO:1 2。2。4、4獲取類中得方法要想取得一個類中得全部方法,可以使用C1 a SS類中得geiD e dared Met h ods ()方法 此方法返回一個Method類得對象數(shù)組,如果要想進(jìn)一步取得方法得具體信息例如:方法 得參數(shù),拋出得異常聲明等等內(nèi)容,就必須依靠Method類來完成.輸出本類中得全部方法:P U b I 1 C M e t h od g e tDecla r edMeth o d s () ihr

26、 o ws Se c u r ityEx c epU o n輸出全部得方法(包括父類中得九pu b lie Met hod getMetho d sC)thro ws Security E X c cpt i 0 n方法操作:取得全部得返回值:public Cl a s s ge t Re t u rnT* p e ()取得全部得參數(shù):pub Ik Classv? getPar a me t e rTy pe() 取得修飾符:pu b I i c i nt ge t Mo d ifi e rs ()取得異常信息:P u b I i c Class? gelE x cepfionTjpeO示例如

27、下:/獲得非繼承得所有方法M e thod me t hods = P e rso n、class、ge t DeclarcdMethods():for C Me t hod m : m e thods)0 Sys t em、out、prinKModifie r toString(nu getModi f iers ()+ iiK get RclurniypcO、getNameO + + m、getNam e () + ():Cla s s pa r as = nu gciP arameterTy pes ();4o r (Cla s s p : p a ra s ) zSys 忙 m. OU

28、 J p r i nt ( p、g el N anic ()+dS y s teiiK OU t、p r inti n ():通過C lass類得g e tMetho d方法或getDecla r edMet h od方法,根據(jù)一個類中得方法名 稱及參數(shù)類型取得Method對象,并通過Invoke ()方法調(diào)用指宦得方法。invoke方 法原型如下:P ub 1 ic Obje c l inv o k e (Objec t obj, Obj e c t 八、ar g s) thro ws Ill e g alAccess E xcep t ion. III e galAr g u mentEx

29、eepl i o n. Invocati o n Targ e tExc e p tion如果要調(diào)用得方法就是類得靜態(tài)方法,obj指定為null即可,然后后面就是參數(shù)-如果就是非靜態(tài)方法,必須傳入一個類得實(shí)例化對象,然后后面就是參數(shù)列表。如果方法就是無參方法:m、i n V 0 k e (obj):亠非靜態(tài)m、i n vok e (nul 1 );。靜態(tài)如果方法帶參數(shù):m、invo k e o bjt 10,20); 靜態(tài)m、i n voke(null, lO. 20): “/非靜態(tài) 示例如下:Person類中得方法原型:Pub 1 i c void f uni (int a, intb);p

30、 ubl i c static void f un2 (int a, St ringb): 調(diào)用方式:V/非靜態(tài)方法調(diào)用方式b met h od = Perso n、cl a s s、geiD e cl a redM e t hod Cfiin I, int、cla s s, i nt、c la s s):m e ih 0 d、invo ke (obj . 1 O. 2 0 );/靜態(tài)方法調(diào)用方式smeihod = Person、class、gelDeclare d Me t hod ( f un2” int、cl a s s, St rin g、c I ass);s me t h 0 d、i

31、n v oke(nul 1.10, Ulo worl d java );12. 2。4、5獲取類中得屬性在反射操作中也同樣可以取得一個類中得全部屬性,但就是在取得屬性得時候有以下兩 種不同得操作:得到本類、實(shí)現(xiàn)得接口與父類中得所有公共屬性:publ 1 C Fiel d getFiel d s () thr o w s Sec u rit y Exc e p tion 得到本類中得全部屬性(包括私有屬性):P ubli C Fie 1 d E geiDecla r cdF i eld $ () throw s Sc c urityE x cept i o n 以上方法返回得都就是Field得數(shù)

32、組,毎一個Field對象就表示類中得一個屬性。 屬性操作:取得屬性修飾符:public int g e tModi f iers()取得屬性類型:publ i c CI a ss getType ()取得屬性名稱:p ublic S tring ge t Name () 示例如下:/獲取類中所有得屬性Fie 1 d( f ield = Perso n. class、ge t D e c la r e d Fields ();fo r (Field f : f ield) / /屬性修飾符IIdSyslcm、out、p rin t (Modifier、t o S tri ng(f、getM od

33、 i fie r s () +屬性類型S y SI e m. ou t、prinK f、 g eiType( ) getN a m e () +”);/ /屬性需稱dSyslcm、out. pr i nUn (f、s etName ():setter ()及gemr ()方法就是一個標(biāo)準(zhǔn)得屬性得訪問方法,如果一個類得屬性被封裝, 則必須通過setter及g e iter方法設(shè)置與取得屬性得值。實(shí)際上此方法得操作之所以要這樣規(guī)定,主要原丙就是由于反射機(jī)制可以給予支持得。通過反射可以調(diào)用setterO及getter ()方法。如果要操作一個類中得屬性,則可以通過Field類來完成.而不必麻煩得通過

34、$ euer C) 及g e tter ()得到.取得公共屬性:P ubl i c F ietd geiFie 1 d( S tring name) ihr o ws NoS u chFieldExceptioir SecurityExc e p t i o n 取得本類展性(包括私有):P ub I ic Fi e Id getDccl a r e d Fi e 1 d (Str i ng name) t h row s NoSuchFiel d E X ce p (ion. SecurityEx c e ption取得屬性內(nèi)容:p b ii c Obj e c t get (O b j e

35、 cl obj) thro ws Illega 1 A r gum e n tExcep t i on, I 1 legal Ac cess Exc e p t i on設(shè)置屬性內(nèi)容:pu b lie void s et (Object obj, Objec t v a lue) t hrow s I I le g alArgumeni E xcep t ion. II 1 egalAc c e ssE x cept i o n 設(shè)置屬性可見(在訪問私有屬性得時候,必須讓這個屬性可見):PU blic V 0 id S e tAcce s s ible (bool e an flag ) t

36、h rows SecuhtyExccp t i on示例如下:Field f = Person, class. gctDeclaredFiel d ( ” name”; / /name 就是本類中 得私有屬性f、set A c c e s s ibl e (t r uc)?/設(shè)置其可見 f . set (obj ,李四“);4。/設(shè)置屬性SystemX oiu、p rinUn(f、get ( obj): 取得屬性 與方法類似,如果類中得屬性就是static修飾得,則S Ct與$ et方法中得obj為n ull 即可。獲取類結(jié)構(gòu)信息綜合實(shí)例:0 P ackage r e fl e ct:impo

37、rtjava、la ng、reflect、i m p ort jav a、uU 1、Sc a niier; pu b lie class Ref 1 ectTest pu b lie s t ati c void p rintConstruc t ors(Class cl) C on s I r ucior cons t r ucto r s = cXgctDeclarcd Con s truct ors();d fo r (Constructor c : c o nsiruc tors) c、getName();、p r i nt ();= ModifierX t oS tri n g (c

38、、g e (Mod i fie r s (); 0 )i n I (modifiers + ”):“S t rin s name =System、ou t0 S tr i ng m o dificr s4if (modifiers、leng t h()3 Sy stem、o ut. p r4 System、out. p r ini ( n ame + (打:6Class( p ar a m T y pes = c、get Paramcic r Types():dfor C i nt i = 0; i 0)4 oSys t em、ou t、pri n t (*”):6System ou t、pr

39、int( p aramTy pes 訂、getName ():System、oul、p riniln (*): ”);op u blic sialic V 0 id p ri n tMeihod s (Class cl) Method( meth ods =cl、getDecla redMe t hod s (): afo r (Mclhod m : methods”6 String n aine = m、geiNam e ();4?las$v? refiy pe = m. getRe lurnTy pc(): g S yst e m、oul、p r i mC J:oS t r i ng (n

40、u g e t Mod i f ie r sd4 S tring modi fiers = Mo d if i c r、t();3 I f (modifiers、lensth() 0 )+ J:get N ame() + + n a me +geiParam e teiT y pes():6dSys t cm、out、p r int(mod i fier sp aramTy pcs = m、i par a mTypes、length: i+)0 System、out、prin t (r e tTy pc、 sC 1 ass3 fo r (i n I i =0 :3if(i 0)p r im (

41、 S );out、prim ( p aram Typ e s i、gc t Name ();aoSyslcm. out、6Sys tenupSy$iem、out、p r int I n(): J:publics t a t i c void priniF i eld s (Class (? cl)6 Field fie 1 ds = cl、getDe c laredFiel d s ();。 for (Fi eldf: fields) Clas s type = f、g e liyp e ():0 S t ring n a me = f、getNam e ();aoSysl e m、ou t、

42、p ri n if):String modifi e rs = Modifier、to S tri ng(f、s e tModifie r s ();if (mod i fic rs、lengthO 0 )Q System. out pr i nl(mod i fier s + ):dS y SI e m、ou仁 pr i n t 1 n (typ e、getName O + + n a me + :)p ubli c static void ni a in(String a r gs) Str i ng name = nul I :4 f (ars1 e n gl h 0)namc= arg

43、sjO:oScan ncr i n = new S c a n ner (Systemin):3System、out、p rin t (Ente r class nam e (eg :jav a . u t i 1. Date): n a me = i n. n e xt O :try 0 Class cl = Class、f o rNamenam e ):3dC I a s s 0)System、out、p rint (modifier s +” J;“System、out、p r in t ( class + n ame):i f (supe rd != nu II & & supercl

44、 != O b j e cix c 1 a ss)4 System X out、p rint( e x tends * + s up e rck g e iName(): aoSy stem、OU t、p rint (“n n ” );0print Con s true t ors(c!);3 System, ou 仁 p r i n t In();0 printM e thod s (cl);3 S y stem、0 ut. print 1 n ():op r iniF i elds (cl);dSystem、out、priniln C ”);o catch (ClassN o tFo u

45、ndExc e ption e ) / TODO Aulo-genera t ed cat c h bl o c k6 e、p rintStac k T r ac e C):12。2, 5通過反射操作數(shù)組反射機(jī)制不光只能用在類中,也可以應(yīng)用在任意得引用數(shù)據(jù)類型上。當(dāng)然,這就包含了 數(shù)組,數(shù)組使用Array類完成.Cbss類中存在以下一個方法,用于返回一個數(shù)組對象得實(shí)例:P U blic Class po n entTy p e, ini、 dinien s ions) th row s 11 legalArgumentExc eption. Negaii veArra yS i zeExce

46、p tion 得到數(shù)組指定下標(biāo)得內(nèi)容:public s tatic Obj elArg u men t ExceptionS e I (Object a r ray. i n l index, Obj e cl v a lue) t h A r r ay I n dexOutOfBou n d sExcepl i on修改內(nèi)容:public stat i c VO i drows II I e ga 1 Argum e nt E xce plion, 示例如下:4n t arr( =L 3.5,7.9;Cla s s? c =arr、gelClass ()、getpo nentTyp e();

47、/創(chuàng)建新數(shù)組對象,長度為10Object n e w A rr = Array、new I n s tanccC 10);/利用set修改指主下標(biāo)得值A(chǔ)rray、sei (newArr.O, 10):A r ray、s e t (newAr r. 1 ,2 0);小 利用get返回指定下標(biāo)得值Sy s t cm、out、prin t ln(數(shù)組下標(biāo)為 I 得元素為:”+ Ar r a y、g el(newA r r ,D):1 2 o 2 o 6 反射與 Anno tat i on一個Annoiation要想讓其變得有意義,則必須結(jié)合發(fā)射機(jī)制取得Annotation中設(shè)置 得全部內(nèi)容。在 Cl

48、ass類中存在以下幾種與Annotation操作有關(guān)得方法:NO類型描述1public A getAnnotaton(Class annoxatonClass)普通如果一個元索中存在注釋,則取得全部注釋2public Annotation! getAnnotatlons()普通返回此元素上的所有注3public AnnotationJ getoedaredAnnotations()普通返回宜摟存放在此元索上的僑有注釋4public boolean isAnnotation()普通劌護(hù)元素是否表示一個注徉5public boolean isAn notation Present(Class/該注

49、解指明數(shù)據(jù)庫中表得名稱TYPE)Tar g et ( v a I u e =E1 e m e n t T ype、Ret e n tion(val u e =Rc t ent i o nPol icy、RUNT I ME) interfa c e TablcAn n otatio n publics t ring ta b I e Name C) ;/數(shù)據(jù)庫中表得名稱Table Annota t ion (lablcName=” suidcnt” ) / 表名稱為 s tudcntc I as s Student /對應(yīng)表st u dent中字段名sname,類型v arch a rCo 1

50、umnAnnol a lioncolumn N a me= s nam e 二 dbly p e=dbTypc、 v a rchar)opriv ate Stri n g n a me;6 / /對應(yīng)表student中字段名sag e,類型num be rdC 0 iumnAn n otati o n ( colu mnN a m e =” s a g el dbty p c=dbTypc、n umbe r )pr i V a le i n I a g e:pu bl i c S t ud e n t (St r i ng name, int a ge) 寸his、name = name:th

51、 i s、a ge = a g c:publi c String g e t Nam e () return name;public void s e tN a ni e (S t ri ng n am e ) I h is. name = n a ni e :d p ub 1 ic int get Age() return ag e : public V o id selAgefi n t age) ( athis、age = age:cla s s ORMHc 1 p V/把對象轉(zhuǎn)換為相應(yīng)得sql語句插入到數(shù)據(jù)庫中P U blic void insert (Ob j e c t i a ble) StringB u ilder

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論