一、注解入门
它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
二、常用内置注解
内置注解都定义在java.lang包中。
@Override
只用于修饰方法,表示要重写超类中的方法。
@Deprecated
用于修饰方法、属性、类,被修饰的元素表示不鼓励使用。
@SuppressWarnings
用来抑制编译时的警告信息(镇压所有警告)
@SuppressWarnings(“all”)//镇压所有警告
@SuppressWarnings(“unchecked”)//镇压不被检查的警告
@SuppressWarnings(value={“unchecked”,“deprecation”})//镇压不被检查和过时的API的警告
三、元注解
元注解是用来负责注解其他注解的。
Java定义了4个标准的元注解类型:
@Target
用于描述注解的使用范围(即:被描述的注解可以用在什么地方)
@Retention
表示需要在什么级别保存该注解信息,或者我们的注解在什么地方还有效(runtime > class > source)。
@Documented
说明该注解将被包含在Javadoc中。
@Inherited
说明子类可以继承父类中的该注解。
public class ALesson001 {
@MyAnnotation
public static void main(String[] args) {
}
@Documented//是否将注解生成Javadoc
@Retention(value = RetentionPolicy.RUNTIME)//表示注解在哪些地方有效(runtime > class > source,如果在runtime中生效,在class和source中一定生效)
@Target(value = ElementType.METHOD)//表示注解可以在哪些地方使用
@Inherited//子类可以继承父类的注解
public @interface MyAnnotation {
}
}
四、自定义注解
1、@interface用来声明一个注解,格式:public @interface 注解名{定义内容}
2、注解中的每一个方法实际上是声明了一个配置参数
3、方法的名称就是参数的名称
4、返回类型就是参数的类型(返回值只能是基本类型:Class、String、enum)
5、可以通过default来声明参数的默认值
6、如果只有一个参数成员,一般参数名为value,有且仅有一个名为value的成员参数,在使用注解为value赋值时,可以省略参数名。
7、注解中声明的参数必须要有值,可以使用default设置默认值,例如空字符串、0等
public class ALesson001 {
@MyAnnotation(sex = 0)
public static void main(String[] args) {
}
@Documented//是否将注解生成Javadoc
@Retention(value = RetentionPolicy.RUNTIME)//表示注解在哪些地方有效(runtime > class > source,如果在runtime中生效,在class和source中一定生效)
@Target(value = ElementType.METHOD)//表示注解可以在哪些地方使用
@Inherited//子类可以继承父类的注解
public @interface MyAnnotation {
String value() default "";
int age() default 0;
int id() default -1;//-1表示不存在
int sex();//没有设置默认值,必须在注解处声明
}
}
end