@Deprecated 和@Deprecated() 有什么区别?
What is the difference between @Deprecated vs @Deprecated()?
今天遇到这个 @Deprecated()
。很想知道 @Deprecated
vs @Deprecated()
,但两者都被编译器解析为相同的接口 Deprecated
。
它们是不同的还是相同的?是否有一些练习可以使用一个而不是另一个?
它不是一个接口,它是一个 annotation。 @Deprecated
和@Deprecated()
是一样的
它们的意思相同。 @Deprecated
只是 shorthand 对于 @Deprecated()
。请参阅 Java 语言规范的 §9.7.2. Marker Annotations:
A marker annotation is a shorthand designed for use with marker annotation types (§9.6.1).
MarkerAnnotation:
@ TypeName
It is shorthand for the normal annotation:
@TypeName()
对带有元素的注释类型使用标记注释是合法的,只要所有元素都有默认值 (§9.6.2)。
Example 9.7.2-1. Marker Annotations
Here is an example using the Preliminary
marker annotation type from §9.6.1:
@Preliminary public class TimeTravel { ... }
从 Java 8 开始,@Deprecated
注释没有元素,因此它只能是标记注释。然而,从 Java 9 开始,它现在有两个元素:since
和 forRemoval
。但由于这些元素具有默认值,因此注释仍可用作标记注释。
今天遇到这个 @Deprecated()
。很想知道 @Deprecated
vs @Deprecated()
,但两者都被编译器解析为相同的接口 Deprecated
。
它们是不同的还是相同的?是否有一些练习可以使用一个而不是另一个?
它不是一个接口,它是一个 annotation。 @Deprecated
和@Deprecated()
是一样的
它们的意思相同。 @Deprecated
只是 shorthand 对于 @Deprecated()
。请参阅 Java 语言规范的 §9.7.2. Marker Annotations:
A marker annotation is a shorthand designed for use with marker annotation types (§9.6.1).
MarkerAnnotation: @ TypeName
It is shorthand for the normal annotation:
@TypeName()
对带有元素的注释类型使用标记注释是合法的,只要所有元素都有默认值 (§9.6.2)。
Example 9.7.2-1. Marker Annotations
Here is an example using the
Preliminary
marker annotation type from §9.6.1:@Preliminary public class TimeTravel { ... }
从 Java 8 开始,@Deprecated
注释没有元素,因此它只能是标记注释。然而,从 Java 9 开始,它现在有两个元素:since
和 forRemoval
。但由于这些元素具有默认值,因此注释仍可用作标记注释。