JDK5.0新特性的学习--元数据

新建一个注释类型,这个类型指明了一本名著的作者和他的email。

java 代码
  1. import java.lang.annotation.*;    
  2.   
  3. @Retention(RetentionPolicy.RUNTIME)    
  4.   
  5. @Target(ElementType.METHOD)    
  6.   
  7. public @interface BookAuthor  {    
  8.   
  9. String name();     
  10.   
  11. String email();    
  12.   
  13. }   
  14.   

 
使用这个注释为我们的方法加上注解: 

java 代码
  1. import java.lang.annotation.Annotation;    
  2.   
  3. public class MetadataShow {    
  4.   
  5.     @BookAuthor(name='曹雪芹',email='caoxueqin@hongloumeng.books')     
  6.   
  7.     public void introHongLouMeng() {    
  8.   
  9.         System.out.println('这是一本好书啊');    
  10.   
  11.     }    
  12.   
  13.   public static void main(String[] args)  {    
  14.   
  15.         MetadataShow metadata = new MetadataShow();    
  16.   
  17.         try {    
  18.   
  19.             Annotation[] annotation = metadata.getClass().getMethod('introHongLouMeng').getAnnotations();    
  20.   
  21.             for(Annotation  a : annotation) {    
  22.   
  23.                 System.out.printf('作者:%s%n', ((BookAuthor)a).name());    
  24.   
  25.                 System.out.printf('他的电子邮件(可能已被注销):%s%n', ((BookAuthor)a).email());    
  26.   
  27.             }    
  28.   
  29.         }    
  30.   
  31.         catch (SecurityException e) {    
  32.   
  33.             e.printStackTrace();    
  34.   
  35.         }    
  36.   
  37.         catch (NoSuchMethodException e) {    
  38.   
  39.             e.printStackTrace();    
  40.   
  41.         }    
  42.   
  43.     }    
  44.   
  45. }    
  46.   

 

请注意,要想在程序运行时能读取这些注释,需要在注释的声明的时候加上

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD) //也可能时其他类型,如针对声明的注释

这是对注释的注释。

编译这两个文件:

javac -source 5 -target 5 -d bin src/com/kuaff/jdk5/*.java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值