注解:
位于源码中,用来修饰程序的元素,但不会对被修饰的对象有直接的影响。
可增加程序的动态性。
普通注解
普通注解:为java代码所用的注解。
- @Override
- 修饰方法,检查该方法是否是父类中继承而来。
- 强制该类中的方法必须满足父类中的定义。
- 避免代码错乱。
- @Deprecated
- 修饰类、类的元素、包。
- 标注该类、元素,包已经被废除。不建议使用。
- @SuppressWarnings
- 可修饰变量、方法、构造函数、类等。
- 压住各种警告信息,使得编译器不显示警告。
3. 其他警告类型:
- all, 忽略所有警告。
- cast,忽略类转型警告。
- serial,忽略实现Serializable接口,没有定义serialversionUID也不警告。
- 使用Javac -X可以查看当前的编译器可支持哪种类型的警告。
自定义注解
1. 注解编写:
public @interface Test{
}
public @interface Peter{
int value() default 0;
int a() default 1;
int b() default 2;
}
2. 注解包括类型:
- 8种基本数据类型。
- String.
- Class.
- enum类型。
- 注解类型。
- 由前面类型注成的数组。
元注解
用来修饰注解的注解。
1. Retention(保留)
用来修饰其他注解存在的范围。
- @Retention(RetentionPolicy.SOURCE)
注解只是包含在源码中,不会出现在class中。 - @Retention(RetentionPolicy.CLASS)
默认的注解保留方式,注解会保留在.class文件中,但是不会被JVM加载。 - @Retention(RetentionPolicy.RUNTIME)
注解会被JVM加载。通常可以结合反射来做一些操作。
2. Target
用来限定目标注解作用于什么位置。
3. Inherited
- 让一个类和他的子类都包含这个注解。
- 即:当一个类使用@Inherited修饰后,继承于该类的子类,也拥有该父类的注解。
4. Repeatable
- 表示被修饰的注解可以重复使用。
- 需要定义注解和容器注解。
注解
public @interface RepeatableAnnotation{
int a() default 0;
int b() default 0;
int c() default 0;
}
注解容器
public @interface RepeataleAnnotations{
RepeatableAnnotation[] value();
}
注解使用
@RepeatableAnnotation(a=1, b=2, c=3)
@RepeatableAnnotation(a=4, b=5, c=6)
public int sum(int a, int b, int c){
int sum = a + b + c;
return sum;
}
5. Documented
- 指明这个注解可以被javadoc工具解析,形成帮助文档。