首页 / JAVA / 理解Java中的注释
理解Java中的注释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了理解Java中的注释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2172字,纯文字阅读大概需要4分钟。
内容图文
我试图通过一些在线资料来学习java中的注释.
在下面的代码中,我在这行中传递的亲爱的“Hello world”字符串发生了什么:@Test_Target(doTestTarget =“Hello World!”)?
@Target(ElementType.METHOD)
public @interface Test_Target {
public String doTestTarget();
}
上面是定义的注释,下面是它的用法
public class TestAnnotations {
@Test_Target(doTestTarget="Hello World !")
private String str;
public static void main(String arg[]) {
new TestAnnotations().doTestTarget();
}
public void doTestTarget() {
System.out.printf("Testing Target annotation");
}
}
当我运行此代码时,它只打印测试目标注释
请帮帮我,我对注释是全新的.
解决方法:
注释基本上是可以附加到字段,方法,类等的数据位.
在Java中声明注释的语法有点尴尬.它们看起来有点像接口(毕竟它们是用@interface声明的),但它们并不是真正的接口.我想你可能已经在你的TestAnnotations类中放了doTestTarget()方法,因为你认为你的注释是一个接口而你需要实现它.事实并非如此 – 如果您愿意,可以删除此方法并从代码中调用它,这样做不会给您带来任何问题.
此外,您可能没有打算将注释放在字段str上.注释仅适用于紧随其后的内容.因此,您的代码无法编译,因为您已将注释应用于字段,但声明您的注释只能应用于方法.将@Target(ElementType.METHOD)更改为@Target(ElementType.FIELD),然后应编译代码.
至于字符串Hello World!会发生什么,它会被写入.class文件,并且可用于读取Java类的任何工具.但是,它不一定在运行时在JVM中可用.发生这种情况是因为您没有为@Test_Target注释指定@Retention. @Retention的默认值是RetentionPolicy.CLASS,这意味着JVM可能无需将它们加载到类文件中. (见Javadoc for the RetentionPolicy enum.)
我想你想看到一些在运行时从这个注释中读取值的方法.如果是这样,我建议将@Retention(RetentionPolicy.RUNTIME)添加到注释中,以确保它在运行时可用.
要在运行时访问注释及其中包含的值,您需要使用反射.我已经重写了你的TestAnnotations类如下,以便快速演示:
import java.lang.reflect.Field;
public class TestAnnotations {
@Test_Target(doTestTarget="Hello World !")
private String str;
public static void main(String[] args) throws Exception {
// We need to use getDeclaredField here since the field is private.
Field field = TestAnnotations.class.getDeclaredField("str");
Test_Target ann = field.getAnnotation(Test_Target.class);
if (ann != null) {
System.out.println(ann.doTestTarget());
}
}
}
当我运行此代码时,它给我以下输出:
Hello World !
内容总结
以上是互联网集市为您收集整理的理解Java中的注释全部内容,希望文章能够帮你解决理解Java中的注释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。