packageannotation;publicabstractclassAnimal{publicabstractvoideat();}packageannotation;publicclassCatextendsAnimal{@Overridepublicvoideat(Stringfood){}}这里在子类Cat中eat方法被注解为覆写父类的方法,但是却比父类方法多出一个参数。如果是在Eclipse在编辑的话,直接就会有红色叉叉提示。(代码编译会通不过)。如果去掉@Override的注解的话,编译没问题,但是Cat中eat方法就是这个类的一个新的方法了,而不是从父类继承的了。
2.@Override
3.@SuppressWarnings忽略警告。如果你的code在转型或其他的部分有一些警告的话,但是你又想忽略这些警告,就可以使用这个注解了。1)deprecation使用了不赞成使用的类或方法时的警告
2)unchecked执行了未检查的转换时警告
3)fallthrough当使用switch操作时case后未加入break操作,而导致程序继续执行其他case语句时出现的警告
4)path当设置一个错误的类路径、源文件路径时出现的警告
5)serial当在可序列化的类上缺少serialVersionUID定义时的警告
6)fianally任何finally子句不能正常完成时警告
7)all关于以上所有情况的警告
packageannotation;importjava.lang.annotation.Documented;importjava.lang.annotation.ElementType;importjava.lang.annotation.Inherited;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType.METHOD)public@interfaceMyAnnotation{Stringvalue();}@Retention(RetentionPolicy.SOURCE)@interfaceMyAnnotation1{}@Retention(RetentionPolicy.CLASS)@interfaceMyAnnotation2{}@Retention(RetentionPolicy.RUNTIME)@interfaceMyAnnotation3{}@Documented@interfaceMyAnnotation4{}@Inherited@interfaceMyAnnotation5{}四、使用例子:
packageannotation;importjava.lang.annotation.Annotation;@MyAnnotation3publicclassTestAnnotation{publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubAnnotationannotation=TestAnnotation.class.getAnnotation(MyAnnotation3.class);System.out.println(annotation.toString());}}打印出结果:@annotation.MyAnnotation3()以上例子如果替换使用MyAnnotation1和MyAnnotation2的话,则取到的annotation的值为空,这就是RetentionPolicy不同的差别。
五、Annotation的作用
介绍到此,可以总结一下Annotation的作用了。基础的大致可以分为三类:1.编写文档2.代码分析3.编译检查但是,开源框架对其赋予了更多的作用比如:Hibernate,注解配置,
@Column("aa")privateStringxx;这个类似于XML配置,简化程序中的配置相对与把一部分元数据从XML文件移到了代码本身之中,在一个地方管理和维护。内部如何实现的?--java反射机制,类似与以上例子。
注释虽然注解、注释只相差一个字,但是用法就差异很大。还是那句话,注解给编译器看,注释是给人看的。基于此的话,对于一个方法来说:1.把这个方法的作用,输入,输出描述清楚就可以了,更多的可以加上一些作者呀,版本呀这样一些信息2.注释编排的美观一些做到这两点应该就可以了。举个例子:
/********************************************************************************NAME:usage*DESCRIPTION:XXX*ARGUMENTS:N/A*RETURN:*AUTHOR:oscar999*VERSION:V0.1*******************************************************************************/看上去这是一个不错的注释^^.
但是对于Java语言来说,注释被赋予了更多的功能。就是你可以使用javadoc这个功能把代码中的注释导出到html的文件中。如果你的代码是共用性很高的代码的话,这份文档就是一份API的参考文档,类似JavaAPI.所以,要产生出这样的文档,就要遵循java定义的一些注释规范,才能产生出规范的文档出来。
一、Java类方法的标准注释还是从类的方法的注释说起。
第一个句号前面的部分,也就是“Readalineoftext.”会出现在“方法摘要”中
2.@param定义的是方法的输入参数,(可以添加多个)出现在“方法详细信息”中。(参数和参数描述之间使用空格隔开,在产生的文档中转成了-)
3.@return返回值的描述4.@see参考的描述5.@exception异常抛出的描述美观考虑,不同类的标签可以换一行显示,比如@param和@return直接空一行。
二、Java类标准注释类的注释和方法注释的格式基本相同。区别的地方:1.放置的位置不同。类的注释放在类定义的上面,方法的注释放在方法定义的上面。2.类的注释比较会使用@version@author@since这样的标签。看模板
/**willbuffertheinputfromthespecifiedfile.Withoutbuffering,each*invocationofread()orreadLine()couldcausebytestobereadfromthe*file,convertedintocharacters,andthenreturned,whichcanbevery*inefficient.***TestDescription**
ProgramsthatuseDataInputStreamsfortextualinputcanbelocalizedby*replacingeachDataInputStreamwithanappropriateBufferedReader.**@seeFileReader*@seeInputStreamReader**@version0.1,11/20/13*@authoroscar999*@sinceJDK1.5*/doc中显示的效果是:同样,描述的第一句出现在“类概要”中。
类的详细信息显示如下:
值得注意的是description中
的使用。如果没有加
,在javacode中不管是否有换行,产生的doc中都不换行。加上
的话,doc中出现换行。