| 
         
     
     | 
     | 
    
  
    | 
    J2SE5.0新特性之元数据 | 
   
  
     | 
   
  
     | 
   
  
    | 
     作者:未知  来源:月光软件站  加入时间:2005-6-5 月光软件站  | 
   
  
    元数据,在java中也叫注释、注解。微软的.net从开始设计时就有这个功能,不过它的术语叫属性。
  这时一个强大的功能,程序员如果想挣钱,得好好研究它,因为
  在将来的j2ee开发中,广泛的使用它,包括ejb的声明,IOC中的注入等。
   
  IBM网站有篇文章详细介绍了它,挺好的一篇文章。
  http://www-900.ibm.com/developerWorks/cn/java/j-annotate1/
  http://www-900.ibm.com/developerworks/cn/java/j-annotate2.shtml
   
  我曾兴致勃勃的根据例子在eclipse中测试了一把,可怎么也得不到注释信息。后来,在命令行直接编译java文件,运行才正常。虽然现在的eclipse 编辑器可以识别java的注释语法,但是在编译的时候并没有生成带注释的java类。我没有仔细深究,可能时eclipse在编译的时候枚加上-target 5参数吧,猜测而已。
   
  新建一个注释类型,这个类型指明了一本名著的作者和他的email。
 - package com.kuaff.jdk5; 
 -   
 - import java.lang.annotation.*; 
 -   
 - @Retention(RetentionPolicy.RUNTIME) 
 - @Target(ElementType.METHOD) 
 - public @interface BookAuthor  
 - { 
 -     String name();  
 -        String email(); 
 - } 
 -   
 -   
 
  使用这个注释为我们的方法加上注解:
 - package com.kuaff.jdk5; 
 -   
 - import java.lang.annotation.Annotation; 
 -   
 - public class MetadataShow 
 - { 
 -     @BookAuthor(name="曹雪芹",email="[email protected]")  
 -     public void introHongLouMeng() 
 -     { 
 -         System.out.println("这是一本好书啊"); 
 -     } 
 -   
 -     public static void main(String[] args) 
 -     { 
 -         MetadataShow metadata = new MetadataShow(); 
 -         try 
 -         { 
 -             Annotation[] annotation = metadata.getClass().getMethod("introHongLouMeng").getAnnotations(); 
 -             for(Annotation  a : annotation) 
 -             { 
 -                 System.out.printf("作者:%s%n", ((BookAuthor)a).name()); 
 -                 System.out.printf("他的电子邮件(可能已被注销):%s%n", ((BookAuthor)a).email()); 
 -             } 
 -         } 
 -         catch (SecurityException e) 
 -         { 
 -             e.printStackTrace(); 
 -         } 
 -         catch (NoSuchMethodException e) 
 -         { 
 -             e.printStackTrace(); 
 -         } 
 -     } 
 - } 
 -   
 -   
 
 
   
  请注意,要想在程序运行时能读取这些注释,需要在注释的声明的时候加上
  @Retention(RetentionPolicy.RUNTIME)
  @Target(ElementType.METHOD) //也可能时其他类型,如针对声明的注释
   
  这是对注释的注释。
  编译这两个文件:
  javac -source 5 -target 5 -d bin src/com/kuaff/jdk5/*.java
 
  
 
  | 
   
  
     | 
   
  
     相关文章:相关软件:  | 
   
   
      |