浅析 Java 注解(Annotation)

本文介绍了Java中的注解(Annotation),包括其作用和性质。重点讲解了五个基本注解:@Override、@Deprecated、@SuppressWarnings、@SafeVarargs和@FunctionalInterface,并探讨了元注解中RetentionPolicy的三个级别:SOURCE、CLASS和RUNTIME,以及如何根据需求选择合适的注解生命周期。
摘要由CSDN通过智能技术生成

Java 5之后可以在源代码中嵌入一些补充信息,这种补充信息称为注解(Annotation),例如在方法覆盖中使用过的@Override注解,注解都是**@符号开头**的。

注解并不能改变程序运行的结果,不会影响程序运行的性能。有些注解可以在编译时给用户提示或警告,有的注解可以在运行时读写字节码文件信息。

五个基本注解

无论是哪一种注解,本质上都一种数据类型,是一种接口类型。到Java 8为止Java SE提供11种内置注解。其中有 5 种是基本注解,它们来自于java.lang包。有6个是元注解(Meta Annotation),它们来自于java.lang.annotation包,自定义注解会用到元注解。

元注解就是负责注解其他的注解。

基本注解包括:@Override、@Deprecated、@SuppressWarnings、@SafeVarargs和@FunctionalInterface。下面逐一介绍一下。

@Override只能用于方法,子类覆盖父类方法(或者实现接口的方法)时可以@Override注解。编译器会检查被@Override注解的方法,确保该方法父类中存在的方法,否则会有编译错误。

package java.lang;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
} 

@Deprecated用来指示API已经过时了

package java.lang;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
} 

@SuppressWarnings 用来抑制编译器警告,如果你确认程序中的警告没有问题,可以不用理会。但是就是不想看到这些警告,可以使用@SuppressWarnings注解消除这些警告。

@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
} 

@SafeVarargs 例如在传递可变参数,参数是非泛型集合

 public class HelloWorld {

         public static void main(String[] args) {
             // 传递可变参数,参数是泛型集合
             display(10, 20, 30);                            
             // 传递可变参数&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值