一、Java内置基本注解
1、@Deprecated:用该注解注释的程序元素,表明不鼓励程序员使用这样的元素,通常是它很危险或存在更好的选择\
2、@Override:表明当前的方法定义将覆盖超类中的方法。
3、@SuppressWarnings:表明关闭不当的编译器警告信息。
4、@Target:表明该注解可以用于什么地方。
表示该注解用于什么地方,例如:@Target(ElementType.METHOD) ElemenetType 参数包括:
ElemenetType.CONSTRUCTOR 构造器声明
ElemenetType.FIELD 域声明(包括 enum 实例)
ElemenetType.LOCAL_VARIABLE 局部变量声明
ElemenetType.METHOD 方法声明
ElemenetType.PACKAGE 包声明
ElemenetType.PARAMETER 参数声明
ElemenetType.TYPE 类,接口(包括注解类型)或enum声明,
5、@Retention:表明需要在什么级别保存该注解信息。
Retention是枚举类型,有三个值 (Source class RunTime).它是为自定义的注解服务的.适于类,接口或者枚举声明
@Retention(RetentionPolicy.SOURCE) 保留在SOURCE阶段。
@Retention(RetentionPolicy.CLASS) 保留CLASS中。
@Retention(RetentionPolicy.RUNTIME) 一支存在.
创建注解类的格式:
public @interface name{}
自定义注释:
@interface RequestForEnhancement {
int id();
String synopsis();
String engineer() default "[unassigned]";
String date();
default "[unimplemented]";
}
一旦完成定义,就可以使用它做注解声明。注解是一个特殊的修饰符,可以和其他修饰符一样(如public,static,final)用在各种地方。为方便计,注解一般放在最前面。注解修饰符由@符号、注解类型名和括号括起来的元素名/值对组成。下面这个例子声明一个方法使用了上面所定义的注解。
@RequestForEnhancement(
id = 2868724,
synopsis = "Enable time-travel",
engineer = "Mr. Peabody",
date = "4/1/3007"
)
public static void travelThroughTime(Date destination) { ... }
注解类型如果不含任何元素,被称为“标记”注解类型,如
public @interface Preliminary { }
“标记”注解类型允许忽略括号,如下:
@Preliminary public class TimeTravel { ... }
注意地方
1、注解元素可以用的类型只有:所有基本类型(int,float,boolean)、String、Class、enum、Annotation、以上类型的数组。
2、在定义元素的默认值时有限制,首先,元素不能有不确定的值,也就是说,元素必须要么具有默认值,要么在使用注解时提供元素的值;其次,对于非基本类型的元素,不能以null作为其值。
3、注解不支持继承。