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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王德升 中级黑马   /  2012-7-24 20:36  /  1482 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast.day2;
import java.lang.reflect.Method;
import javax.jws.soap.InitParam;
public static void main(String[] args) throws Exception{

  System.runFinalizersOnExit(true);
  if(AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)){
   ItcastAnnotation annotation = (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
  
   //这里和下面的强转有什么不同呢?
   System.out.println(annotation.color());
   System.out.println(annotation.value());
   System.out.println(annotation.arrayAttr().length);
   System.out.println(annotation.lamp().nextLamp().name());//这里究竟是怎么调用的?
   System.out.println(annotation.annotationAttr().value());
  }
  
  Method mainMethod = AnnotationTest.class.getMethod("main", String[].class);
  ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);
  
  //这里强转是什么意思呢?
  System.out.println(annotation2.value());
}
}
实在是看不懂啊,求指导思路。

1 个回复

倒序浏览
本帖最后由 张水荣 于 2012-7-25 13:16 编辑

System.out.println(annotation.lamp().nextLamp().name());//这里究竟是怎么调用的?
------在ItcastAnnotation类中定义了一个Lamp类型的属性,Lamp类中有一个nextLamp()方法,此方法返回的是Lamp类型的。
之前老师把Lamp类型定义成了枚举类型,所以Lamp是枚举类型,其name()方法返回的是枚举对象的名字。


Method mainMethod = AnnotationTest.class.getMethod("main", String[].class);
  ItcastAnnotation annotation2 = (ItcastAnnotation)mainMethod.getAnnotation(ItcastAnnotation.class);
//这里强转是什么意思呢?
  System.out.println(annotation2.value());
------把加在main方法上的annotation(注解)名称打印出来

这些例子是使用反射来说明如何给Annotation(注解)加上属性的。

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马