注解
@Override
- 定义在java.lang.Override中,只适用于修辞方法
- 表示一个方法声明 打算重写超类中的另一个方法声明
@Deprecated
- 定义在java.lang.Deprecated中,可适用于修辞方法、属性、类
- 表示不鼓励程序员使用这样的元素,通常因为使用它危险或存在更好的选择
@SuppressWarnings
-
定义在java.lang.SuppressWarnings中,用来抑制编译时的警告信息
-
与前两个注解不同,需要添加一个参数才能正确使用,这些参数都是已经定义好的
@SuppressWarnings("all") @SuppressWarnings("unchecked") @SuppressWarnings("value={"unchecked","deprecation"}") 等等......
元注解
- 负责注解其他注解,java定义了4个标准的meta-annotation类型,用来提供对其他annotation类型作说明
- 在java.lang.annotation包中(@Target, @Retention,@Documented,@Inherited)
-
@Target:用于描述注解的使用范围(即被描述的注解可以用在什么地方)
-
@Retention:表示需要在什么级别保存该注释信息,用于描述注解的声明周期(SOURCE<CLASS<RUNTIME)
-
@Documented:说明该注解被包含在javadoc中
-
@Inherited:说明子类可以继承父类中的该注解
import java.lang.annotation.*; //测试元注解 public class Test01 { @MyAnnotation public void test(){ } } //interface自定义一个注解,看interface源码,此处表示MyAnnotation注解可以用在方法和类中 @Target(value = {ElementType.METHOD,ElementType.TYPE}) //@Retention表明我们的注解什么时候有效,此处表明运行时有效 @Retention(value = RetentionPolicy.RUNTIME) //表示是否将注解生成到javadoc(文档)中 @Documented //表示子类可以继承父类 @Inherited @interface MyAnnotation{ }
自定义注解
使用@interface时,自动继承了java.lang.annotation.Annotation接口
- @interface用来声明一个注解,格式:public @interface 注解名{定义内容} ,其中public适时省略
- 其中的每一个方法实际上是声明了一个配置参数
- 方法的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须有值,我们定义注解元素时,经常使用空字符串,0作为默认值