首页 > 解决方案 > @Deprecated 与 @Deprecated() 有什么区别?

问题描述

今天遇到了这个@Deprecated()。很想知道@Deprecatedvs@Deprecated()但两者都Deprecated被编译器解析为相同的接口。

它们是不同的还是相同的?是否有一些练习可以使用一个而不是另一个?

标签: javaannotationsjava-annotations

解决方案


他们俩的意思是一样的。@Deprecated只是 . 的简写@Deprecated()。见§9.7.2。Java 语言规范标记注释

标记注释是设计用于标记注释类型(第 9.6.1 节)的简写。

MarkerAnnotation:
@ TypeName

它是普通注释的简写:

@TypeName()

对带有元素的注释类型使用标记注释是合法的,只要所有元素都有默认值(第 9.6.2 节)。

示例 9.7.2-1。标记注释

这是一个使用Preliminary§9.6.1 中的标记注释类型的示例:

@Preliminary public class TimeTravel { ... }

从 Java 8 开始,@Deprecated注解没有元素,所以它只能是一个标记注解。然而,从 Java 9 开始,它现在有两个元素:sinceforRemoval. 但是由于这些元素具有默认值,因此注释仍然可以用作标记注释。


推荐阅读