javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解

  下面要谈到的一组注解类型是在Java SE API中预定义的。一些注类型由Java编译器使用,一些注类型也适用于其他注释

Java语言使用的注类型

  预定义的注类型定义在 java.lang 这个包中,他们是:@Deprecated@Override, and @SuppressWarnings等……

@Deprecated 

  表示标记的元素已被弃用,不应再使用。只要程序使用带有@Deprecated注的方法,类或字段,编译器就会生成警告。当不推荐使用元素时,还应使用Javadoc @deprecated标记进行记录,如以下示例所示。在Javadoc注和注中使用at符号(@)并不是偶然的:它们在概念上是相关的。另外请注意,Javadoc标记以小写字母d开头,注释以大写字母D开头。
   
// Javadoc comment follows
    /**
     * @deprecated
     * explanation of why it was deprecated
     */
    @Deprecated
    static void deprecatedMethod() { }
}

@Override

  @Override注通知编译器元素意图覆盖在超类中声明的元素。接口和继承中将讨论覆盖方法。
  // mark method as a superclass method
   // that has been overridden
   @Override 
   int overriddenMethod() { }

  虽然在覆盖方法时不需要使用此注,但有助于防止错误。如果标记为@Override的方法无法正确覆盖其一个超类中的方法,则编译器会生成错误。

@SuppressWarnings

 @SuppressWarnings注告诉编译器抑制它将会生成的特定警告。在以下示例中,使用了不推荐使用的方法,编译器通常会生成警告。然而,在这种情况下,注会导致警告被抑制。
  
// use a deprecated method and tell 
   // compiler not to generate a warning
   @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
        // deprecation warning
        // - suppressed
        objectOne.deprecatedMethod();
    }
  每个编译器警告都属于一个类别。 Java语言规范列出了两个类别:deprecation 和 unchecked。当与泛型出现之前编写的遗留代码进行接口时,可能会发生未经检查的警告。要抑制多个类别的警告,请使用以下语法:
 
@SuppressWarnings({"unchecked", "deprecation"})
  

@SafeVarargs

  @SafeVarargs注,当应用于方法或构造函数时,断言该代码不对其varargs参数执行潜在的不安全操作。当使用此注释类型时,与varargs使用相关的未选中的警告被抑制。

@FunctionalInterface 

  functionalinterface文字注释,介绍了java SE 8,表明该类型声明是一个功能接口,由java语言规范定义。

在注解中使用其他的注解:

  适用于其他注释的注释称为元注。在java.lang.annotation中定义了几个元注类型。

@Retention

  @Retention  注指定如何存储标记的注: RetentionPolicy.SOURCE - 标记的注仅在源级别保留,并被编译器忽略。 RetentionPolicy.CLASS - 标记的注由编译器在编译时保留,但被Java虚拟机(JVM)忽略。RetentionPolicy.RUNTIME - 标记的注由JVM保留,因此可以由运行时环境使用。

@Documented

  @Documented注指示每当使用指定的注时,应使用Javadoc工具记录这些元素。 (默认情况下,注释不包括在Javadoc中。)有关详细信息,请参阅Javadoc工具页面。

@Target

  @Target注解标记另一个注,以限制注可应用于哪种类型的Java元素。目标注指定以下元素之一作为其值:
   
ElementType.ANNOTATION_TYPE:可以应用于注类型。
   ElementType.CONSTRUCTOR:可以应用于构造函数。
   ElementType.FIELD:可以应用于一个字段或属性。
   ElementType.LOCAL_VARIABLE:可以应用于局部变量。
   ElementType.METHOD:可以应用于方法级注
   ElementType.PACKAGE:可以应用于包的声明。
   ElementType.PARAMETER:可以应用于一个方法的参数。
   ElementType.TYPE:可以应用于类的任何元素。

@Inherited

  @Inherited注表示注类型可以从超级类继承。 (默认情况下不是这样)。当用户查询注类型并且类没有此类型的注时,会为该类的“超类”查询注类型。此注仅适用于类声明。

@Repeatable

  @Repeatable注,在Java SE 8中引入,表示标记的注可以多次应用于同一声明或类型使用。有关详细信息,请参阅重复注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值