A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyy666 中级黑马   /  2014-5-30 23:26  /  738 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  • import java.lang.annotation.*;
  •         @Retention(RetentionPolicy.RUNTIME)// 编译器将把注释记录在类文件中,在运行时 VM 将保留注释
  •         @Target(ElementType.METHOD)//指定注解类存放位置,存放在类中,方法上等等。
  •         public @interface MyAnnotation
  •         {
  •         }
  • 复制代码
  • import java.lang.annotation.Annotation;
  • public class AnnotationTest {
  •         @MyAnnotation
  •         public static void main(String[] args) {
  •                 if (AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)) {
  •                         Annotation annotation = AnnotationTest.class.getAnnotation(MyAnnotation.class);
  •                         System.out.println(annotation);
  •                 }
  •                 }
  •         }

复制代码

2 个回复

倒序浏览
同学,你对注解的理解存在一定偏差吧,主函数中的代码有误.
  1.                 if (AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)) {
  2.                         Annotation annotation = AnnotationTest.class.getAnnotation(MyAnnotation.class);
  3.                         System.out.println(annotation);
  4.                 }
复制代码

你的这段代码的含义不知道你是否理解,这段指的是寻找的是类AnnotationTest上的注解,而非类AnnotationTest的main方法上的注解.类的注解和方法的注解是有区别的哦.
主函数代码更改如下即可:
  1.                 Method mainMethod = AnnotationTest.class.getMethod("main", args.getClass());//获取方法上的注解
  2.                 if(mainMethod.isAnnotationPresent(MyAnnotation.class)){
  3.                         Annotation anno = mainMethod.getAnnotation(MyAnnotation.class);
  4.                         System.out.println(anno);
  5.                 }
复制代码
回复 使用道具 举报
同学,另外想分享的是,提问题的时候记得表达清晰一些,你的问题只是说我你遇到了问题,但是具体问题还需要大家阅读代码后才知道,如果你在问题的描述中,直接说明,为什么控制台不会显示信息,大家就理解了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马