資源描述:
《java注解實(shí)踐-java開發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Java注解實(shí)踐-Java開發(fā)Java經(jīng)驗(yàn)技巧Java注解實(shí)踐原文出處:翡青注解對(duì)代碼的語意沒冇直接影響,他們只負(fù)責(zé)提供信息給相關(guān)的程序使用.?注解永遠(yuǎn)不會(huì)改變被注解代碼的含義,但可以通過工具對(duì)被注解的代碼進(jìn)行特殊處理.JDK基本Annotation注解?Override?Deprecated?SuppressWarnings(value二〃unchecked")@SafeVarargs?Functionallntcrfacc?value特權(quán)如果使用注解吋只需耍為value成員變量指定值,則使用注解時(shí)可以直接在該注解的括號(hào)中指定value值,而無需使用n
2、ame二value的形式.如@SuppressWarnings("unchecked")(SuppressWarnings的各種參數(shù)請(qǐng)參考解析@SupprcssWamings的各種參數(shù))?詰堅(jiān)持使用Override注解:如果在每個(gè)方法中使用Override注解來聲明要覆蓋父類聲明,編譯器就可以替你防止大量的錯(cuò)誤.JDK元Annotation元Annotation用于修飾It他的Annotation定義.元注解?Retention注角@Target注倂@Documcnted注詢?Inherited注僑?Retention?注解的保翩策略?Documente
3、d?Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATTON_TYPE)public@interfaceRetention{RetentionPolicyvalue();}value為SOURCE,?CLASS,?RUNTIME三值之一:publicenumRetentionPolicy{/***Annotationsaretobediscardedbythecompiler.*/SOURCE,/***Annotationsaretoberecordedintheclassfileb
4、ythecompiler*butneednotberetainedbytheVMatruntime.Thisisthedefault*behavior.*/CLASS,/***Annotationsaretoberecordedintheclassfilebythecompilerand*retainedbytheVMatruntime,sotheymaybereadreflcctively.**?seejava.lang,reflect.AnnotatedElement*/RUNTIME}??Target?指定Annotation可以放宜的位置(被修飾
5、的目標(biāo))?Documented?Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATTON_TYPE)public@intcrfaccTarget{ElementType[]value();publicenumElementType{/**Class,interface(includingannotationtype),orenumdeclaration*/TYPE,/**Fielddeclaration(includesenumconstants)*/FIELD,/**Methodd
6、eclaration*/METHOD,/**Parameterdeclaration*/PARAMETER,/**Constructordeclaration*/CONSTRUCTOR,/**Localvariabledeclaration*/LOCAL_VARTABLE,/**Annotationtypedeclaration*/ANNOTATION_TYPE,/**Packagedeclaration*/PACKAGE??Documented?指定被修飾的該Annotation可以被javadocI具提取成文檔.??Inherited?指定被修飾的A
7、nnotation將具有繼承性如果某個(gè)類使^@Xxx注解(該Annotation使用了?Inherited修飾)修飾,則其子類口動(dòng)被@乂乂滅注解修飾.Annotation/***Createdbyjifangon15/12/22.*/@Tnherited@Target({ElementType.ANNOTATION_TYPE,ElementType.TYPE})?Retention(RetentionPolicy.RUNTIME)public?interfaceTestable{}ClientpublicclassClient{@Testpublicvo
8、idclicnt(){newSubClass();?TestableclassS