你刚刚写了一个注释。
特别是关于default
语句:这是因为注解和接口不能有构造函数,所以这是为注解属性设置默认值的唯一方法。来自Java 语言规范:
注释类型元素可能具有为其指定的默认值。这是通过在其(空)参数列表后面加上关键字default
和元素的默认值来完成的。
在读取注释时动态应用默认值;默认值不会编译到注释中。因此,即使在更改之前编译的类中,更改默认值也会影响注释(假设这些注释缺少默认元素的显式值)。
我注意到java.lang.annotation中的注释都没有使用默认值。
用法:@HelloWorld
您有一个带有属性的注释sayHello
。你可以把它放在这样的类上:
@HelloWorld(sayHello="Hi")
public class MyClass {
}
因为你有一个默认值,你可以把
@HelloWorld
public class MyClass {
}
(请注意,文档说,“在带有单个元素的注释中,元素应该命名为value
”;我认为这样做的唯一原因是您可以直接编写@HelloWorld("Hi")
而不必命名参数。)
如所写,您的注释可用于任何有效的程序元素(包括方法和变量声明)。您可以使用@Target
注释进行更改。
最后,设置RetentionPolicy
允许您决定注释是否应该被编译器丢弃、被 VM 丢弃或始终保留。
两个可能也很有趣的包:javax.annotation和javax.annotation.processing。这里是一个使用注解处理进行源代码分析的例子。