1.内置注解
JavaSE中内置三个标准注解,定义在java.lang中
-
@override此注释只用于修辞方法,表示一个方法声明打算重写另一个方法的声明。
-
@Deprecated此注解可以用于修辞方法、属性、类,表示不推荐使用,但是可以使用,存在更好的方式。
-
@SuppressWarnings用来抑制编译时的警告信息,需要添加参数使用。
@SuppressWarnings(”all“)
@SuppressWarnings(“unchecked”)
2.元注解
元注解就是负责注解其他注解,Java定义了4个标准meta-annotation类型,他们被用来提供对其他annotation类型作说明。
-
@Target:用于描述注解的使用范围。
-
@Retention:表示在什么级别保存该注释信息,用于描述注解的生命周期。
SOURCE<CLASS<RUNTIME
-
@Document:说明该注解将被包含javadoc中。
-
@Inherited:说明子类可以继承父类中该注解。
public class Annotion {
@TestAnnotion //定义的注解
public void testMethod() {
}
}
//定义一个简单注解
//1.注解使用范围
@Target (value= {ElementType.METHOD,ElementType.TYPE} )
//2.Retention注解有效范围(runtime>class>sources)
@Retention(value=RetentionPolicy.RUNTIME)
//3.Inherited 可以继承父类注解
@Inherited
//该注解将被包含javadoc中
@Document
@interface TestAnnotion{
}
3.自定义注解
使用@interface(自定义注解关键词)自定义注解时自动继承了Java.lang.annotion.Annotion接口
格式 :@interface 注解名{定义内容}
class TestA {
//注解 无默认值需要给参数赋值,有default可不用,赋值顺序无要求
@TestAnnotion2(months=6,days=4)
public void test() {
}
}
//元注解
@Target (value= {ElementType.METHOD,ElementType.TYPE} )
@Retention(value=RetentionPolicy.RUNTIME)
@interface TestAnnotion2{
//以下为注解的参数而不是方法!!!
//注解的参数:参数类型 参数名();
int years() default 2020;
int months();
int days();
String[] weaks() default {"Friday"};//数组参数类型
}
//如果只有一个参数,参数名建议为value,赋值时不需要参数名可直接赋值