当前位置:  开发笔记 > 编程语言 > 正文

@interface Java中的默认声明用法

如何解决《@interfaceJava中的默认声明用法》经验,为你挑选了1个好方法。

我刚刚发现了这个功能.

使用"@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.和这里是使用注释处理源代码分析的一个例子.



1> Michael Myer..:

你刚刚写了一个注释.

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.和这里是使用注释处理源代码分析的一个例子.


+1:谢谢mmyers:你对这个懒惰的程序员有什么总结吗?
不,只有@interface用法...我会看看链接...稍后: - /
好的,执行摘要:注释对于源代码分析和代码生成非常有用(许多Web框架都这样做).够好了?
推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有