从Java 5.0版发布以来,5.0平台提供了一个正式的annotation功能:允许开发者定义、使用自己的annotation类型。此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotation的API,一个使用annotation修饰的
class文件,一个annotation处理工具(apt)组成。
在实际开发中,其实“
注解”和“xm配置文件”是一个问题的两种解决手段,本质上是一回事,你掌握了配置文件来完成项目也行,掌握了注解来完成项目也行,具体使用哪种方式是根据项目统一要求的,公司的不同要求使用的方式也不同。
Annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。Annotation可以从源文件、class文件或者以
在运行时反射的多种方式被读取。
注解可以用在类、方法、成员变量、方法的参数、方法的局部变量上面,任何地方都可以使用注解。
自定义注解的方式:
Myecplise里面新建一个Annotation,你会
发现它的类型是@interface,如果自定义的注解类里面什么都没有的话,比如在某个类上面使用这个注解的时候也就相应的什么都不用做,直接在类的上面写上@开头的注解名称即可;而如果在注解类里面为其增加一个属性比如String value();,然后在某个类上面使用此注解的时候也必须相应的为此属性赋值。赋值方式下面会讲到。
1. Java注解(Annotation):
a) Override注解表示子类要重写(override)父类的对应方法。
b) Deprecated注解表示方法是不建议被使用的。
c) SuppressWarnings注解表示抑制警告。
2. 自定义注解:当注解中的属性名为value 时,在对其赋值时可以不指定属性的名称而直接写上属性值即可;除了value以外的其他值都需要使用name=value这种赋值方式,即明确指定给谁赋值。
3. 当我们使用@interface
关键字定义一个注解时,该注解隐含地继承了
java.lang.annotation.Annotation
接口;如果我们定义了一个接口,并且让该接口继承自Annotation,那么我们所定义的接口依然还是接口而不是注解;Annotation本身是接口而不是注解。可以与Enum类比。