2.6.3、注解的介绍和代码实例
三、注解的使用
注解是在1.5版本引入的,现在已经成为日常程序开发中非常重要的一部分。注解是一种元数据,本身没有任何作用,如果要有,必须依附在具体的对象上,在日常使用中最常见的两个注解是@Override和@Deprecated。
先不考虑注解具体的概念、用法和如何工作等问题,注解与“标签”的概念十分相似,@Override可以理解为在方法上添加了一个标签,其代表的就是“这是一个继承关系中,子类已经重写的方法。”更进一步理解,这个标签在某个方法上加上之后,如果父类中没有该方法,那么在编译的时候就会报错,而且可以解决在继承场景下一些不留心将方法名拼错的情况,同时增强了一些程序的可读性。
如上图所示,同样以@Override为例,对注解进行进一步的提取和抽象。具体抽象出了四个方面:首先在作用域方面,它只能作用于子类重写的方法上;其次在生命周期方面,注解只是在编译时进行检查,在编译结束后便没有了任何作用;除此之外,在文档支持方面,为例解决可读性的问题,设计了@Documented的注解,用来表示注解的说明注释是否包含在JavaDoc中;在层级结构设计方面,设计了@inherited用来表示注解是否可以被子类继承。
在上图中定义了一个苹果描述注解,包含了@Target、@Retention、@Inherited和@Documented四个注解,表示它生命周期是程序运行的声明周期、可以被子类继承、文档可以被包含。在设计出这个注解之后,可以将其用在前文中的Apple实例上,如图中在类和方法上各添加了一个注解,在添加完后,便可以配合反射看到注解的效果,这样可以更好的加强其自描述的能力和配置的灵活性。