1.这是注释
//
/**
*/
2.这是注解
@Override public String toString() { return super.toString(); }
@Override
注解
作用:检查是否是重写方法。
没有它也行,只不过没有检查作用了。
类似的
@Override
:让编译器检查该方法是否正确地实现了覆写;@SuppressWarnings
:告诉编译器忽略此处代码产生的警告。
小结
注解(Annotation)是Java语言用于工具处理的标注:
注解可以配置参数,没有指定配置的参数使用默认值;
如果参数名称是value
,且只有一个参数,那么可以省略参数名称。
3.定义注释
元注解
有一些注解可以修饰其他注解,这些注解就称为元注解(meta annotation)。Java标准库已经定义了一些元注解,我们只需要使用元注解,通常不需要自己去编写元注解。
@Target
最常用的元注解是@Target
。使用@Target
可以定义Annotation
能够被应用于源码的哪些位置:
- 类或接口:
ElementType.TYPE
; - 字段:
ElementType.FIELD
; - 方法:
ElementType.METHOD
; - 构造方法:
ElementType.CONSTRUCTOR
; - 方法参数:
ElementType.PARAMETER
。
必须设置@Target
和@Retention
,@Retention
一般设置为RUNTIME
,因为我们自定义的注解通常要求在运行期读取。一般情况下,不必写@Inherited
和@Repeatable
。
小结
Java使用@interface
定义注解:
可定义多个参数和默认值,核心参数使用value
名称;
必须设置@Target
来指定Annotation
可以应用的范围;
应当设置@Retention(RetentionPolicy.RUNTIME)
便于运行期读取该Annotation
。
4.处理注释(----)
。。。。不理解
小结
可以在运行期通过反射读取RUNTIME
类型的注解,注意千万不要漏写@Retention(RetentionPolicy.RUNTIME)
,否则运行期无法读取到该注解。
可以通过程序处理注解来实现相应的功能:
- 对JavaBean的属性值按规则进行检查;
- JUnit会自动运行
@Test
标记的测试方法。