资源描述:
《java注解实践-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Java注解实践-Java开发Java经验技巧Java注解实践原文出处:翡青注解对代码的语意没冇直接影响,他们只负责提供信息给相关的程序使用.?注解永远不会改变被注解代码的含义,但可以通过工具对被注解的代码进行特殊处理.JDK基本Annotation注解©Override©Deprecated©SuppressWarnings(value二〃unchecked")@SafeVarargs©Functionallntcrfacc•value特权如果使用注解吋只需耍为value成员变量指定值,则使用注解时可以直接在该注解的括号中指定value值,而无需使用n
2、ame二value的形式.如@SuppressWarnings("unchecked")(SuppressWarnings的各种参数请参考解析@SupprcssWamings的各种参数)•诘坚持使用Override注解:如果在每个方法中使用Override注解来声明要覆盖父类声明,编译器就可以替你防止大量的错误.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、的目标)©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将具有继承性如果某个类使^@Xxx注解(该Annotation使用了©Inherited修饰)修饰,则其子类口动被@乂乂灭注解修饰.Annotation/***Createdbyjifangon15/12/22.*/@Tnherited@Target({ElementType.ANNOTATION_TYPE,ElementType.TYPE})©Retention(RetentionPolicy.RUNTIME)public©interfaceTestable{}ClientpublicclassClient{@Testpublicvo
8、idclicnt(){newSubClass();©TestableclassS