简明解释
抛开那些抽象的概念不说,先来看看下面的例子:
int a;
@interface a;
其实上面两个差不多,int是说明a这个变量是整型,@interface是说明a是一个注解。也就是说@interface是用来声明一个注解的。
而注解就约等于注释。
注释:这个注释用来说明下面的方法会删除某些东西
//这个方法会删除一些东西
void remove() {
do remove
}
注解:这个注解用来说明下面的方法Override(重写)了父类的remove方法
@Override
void remove() {
do remove
}
可以看出注解和注释很相似,都是用来说明某个事情的。只不过注释是在"//“后面写想写的东西,而注解是用”@xxx"来说明。
更详解的解释
注解有java自带的,也可以自己声明,称为自定义注解
。
Java自带的有标准注解和元注解
,上面的“@Override
”就是一个标准注解,它表示当前的方法定义将覆盖父类中的方法。
我们先来看一下这个注解的定义(和接口的定义相似,只不过“interface”是定义接口的,“@interface”是定义注解的):
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override
{
}
可以看到这个注解定义被两个注解修饰,修饰注解的注解也称为元注解
,即“@Target”和“@Retention”为元注解。
和上面“@Override”类似,用相同的格式可以定义自己的注解:
public @interface MyAnnotation{
}
上面的自定义注解名字为@MyAnnotation,也就是说可以用“@MyAnnotation
”来修饰你想修饰的事情。(但这个注解还比较简单,没有使用元注解)
Java自带的标准注解
包括@Override、@Deprecated和@SuppressWarnings
,分别用于标明重写某个方法、标明某个类或方法过时、标明要忽略的警告,用这些注解标明后编译器就会进行检查。
元注解
元注解是用于定义注解的注解,包括@Retention、@Target、@Inherited、@Documented
,@Retention用于标明注解被保留的阶段,@Target用于标明注解使用的范围,@Inherited用于标明注解可继承,@Documented用于标明是否生成javadoc文档。