我刚刚发现了这个功能。
使用“@interface”语法声明接口允许您设置默认值。
public @interface HelloWorld {
public String sayHello() default "hello world";
}
这对我来说是新鲜事。如何使用默认值。
我找不到对它的引用,因为在Java 1.5中添加“@”之前,www充满了java接口文档(是.5还是.4?)
修改
感谢您的回答(我在某种程度上接近“注释”,因为我已经使用了标签):P
我知道多年前我应该读过那份文件!!! ...让我们看看......
许多API需要大量的样板代码。对于....
答案 0 :(得分:60)
您刚刚写了annotation。
特别关于default
语句:使用它是因为注释和接口不能有构造函数,因此这是获取注释属性的默认值的唯一方法。来自Java Language Specification:
注释类型元素可以具有为其指定的默认值。这是通过使用关键字
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。 here是使用注释处理进行源代码分析的示例。
答案 1 :(得分:4)
这是annotation你声明不是界面。它是在Java 1.5中添加的。