目录
1.注解接口声明
注解接口是一种特殊的接口类型。为了与普通接口区分开来,关键字interface的前面应该有一个 @
符号。
@interface 注解接口名 {
类型 元素名1();
类型 元素名2() default 默认值;
}
@interface RequestForEnhancementDefault {
int id();
String synopsis();
String engineer() default "[unassigned]";
String date() default "[unimplemented]";
}
2.注解的使用
@AnnotationName(元素名1=值1, 元素名2=值2,...)
2.1无元素注解
如果注解中没有元素或所有元素都使用默认值,则可以省略括号。
@Override
void mySuperMethod() { ... }
2.2有元素注解
有元素注解可以包含命名或未命名的元素。
//命名元素
@Author(name = "Benjamin Franklin", date = "3/27/2003")
//未命名元素
@SuppressWarnings(value =“ unchecked”)
//未命名元素的简写
@SuppressWarnings("unchecked")
2.3多个注解
也可以在同一声明上使用多个注解。
@Author(name = "Jane Doe")
@EBook
class MyClass { ... }
2.4多重注解
如果注解具有相同的类型,则称为多重注解。
@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }
3.常见注解
3.1用于编译的注解
3.1.1@Deprecated(全部场景)
@Deprecated
注解指示已标记的元素已弃用,不应再使用。每当程序使用带有@Deprecated
注解的方法,类或字段时,编译器都会生成警告。不推荐使用元素时,还应使用Javadoc@deprecated
标记对其进行记录,如以下示例所示。
// Javadoc comment follows
/**
* @deprecated
* explanation of why it was deprecated
*/
@Deprecated
static void deprecatedMethod() { }
}
3.1.2@SuppressWarnings(除了包和注解场景)
@SuppressWarnings
注解告诉编译器禁止生成特定警告。在以下示例中,使用了不赞成使用的方法,并且编译器通常会生成警告。但是,在这种情况下,@SuppressWarnings会导致警告被抑制。
// use a deprecated method and tell
// compiler not to generate a warning
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
// deprecation warning
// - suppressed
objectOne.deprecatedMethod();
}
3.1.3@override(只能方法场景)
@Override
注解通知编译器该元素旨在覆盖超类中声明的元素。
// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }
3.1.4@Generated(全部场景)
@Generated注解的目的是供代码生成工具来使用,任何生成的源代码都可以被注解,从而与程序员提供的代码区分开来。
3.1.5@SafeVarargs(方法、构造器场景)
@SafeVarargs
注解在应用于方法或构造函数时,断言该代码不会对其varargs
参数执行潜在的不安全操作。
3.1.6@FuntionalInterface(接口场景)
@FuntionalInterface将接口标记为只有一个抽象方法的函数式接口。
3.2用于管理资源的注解
3.2.1@PostConstruct和@PreDestroy(方法场景)
@PostConstruct和@PreDestroy注解用于控制对象生命周期的环境中,例如Web容器和应用服务器。
3.2.2@Resource(类、接口、方法、域场景)
@Resource注解用于资源内注入。
3.3元注解
元注解就是适用于其他注解的注解,场景均为注解场景。
3.3.1@Target
@Target元注解可以应用于一个注解,以限制该注解可以应用到哪些项上。
3.3.2@Retention
@Retention元注解用于指定一条注解应该保留很长时间。
3.3.3@Documented
@Documented元注解为像Javadoc这样的归档工具提供了一些提示。
3.3.4@Inherited
@Inherited元注解只能应用于对类的注解。
3.3.5@Repeatable
@Repeatable注解表示可以将标记的注释多次应用于同一声明或类型使用。
3.3.6@Native
@Native 注解修饰成员变量,则表示这个变量可以被本地代码引用,常常被代码生成工具使用。对于 @Native 注解不常使用,了解即可。
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/2508.html