@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 开始,它现在有两个元素:sinceforRemoval。但由于这些元素具有默认值,因此注释仍可用作标记注释。