我刚刚发现了这个功能.
使用"@interface"语法声明接口允许您设置默认值.
public @interface HelloWorld { public String sayHello() default "hello world"; }
这对我来说是新鲜事.如何使用该默认值.
我找不到对它的引用,因为在Java 1.5中添加"@"之前,www充满了java接口文档(是.5还是.4?)
编辑
谢谢你的答案(我在某种程度上接近"注释",因为我已经使用了标签):P
我知道多年前我应该读这份文件!!! ...让我们看看...
许多API需要相当数量的样板代码.对于....
Michael Myer.. 61
你刚刚写了一个注释.
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.和这里是使用注释处理源代码分析的一个例子.
你刚刚写了一个注释.
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.和这里是使用注释处理源代码分析的一个例子.