J2SE5.0新特性之元数据

原创 2005年05月31日 23:53:00
元数据,在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。
  1. package com.kuaff.jdk5;
  2.  
  3. import java.lang.annotation.*;
  4.  
  5. @Retention(RetentionPolicy.RUNTIME)
  6. @Target(ElementType.METHOD)
  7. public @interface BookAuthor 
  8. {
  9.     String name(); 
  10.        String email();
  11. }
  12.  
  13.  

使用这个注释为我们的方法加上注解:
  1. package com.kuaff.jdk5;
  2.  
  3. import java.lang.annotation.Annotation;
  4.  
  5. public class MetadataShow
  6. {
  7.     @BookAuthor(name="曹雪芹",email="caoxueqin@hongloumeng.books"
  8.     public void introHongLouMeng()
  9.     {
  10.         System.out.println("这是一本好书啊");
  11.     }
  12.  
  13.     public static void main(String[] args)
  14.     {
  15.         MetadataShow metadata = new MetadataShow();
  16.         try
  17.         {
  18.             Annotation[] annotation = metadata.getClass().getMethod("introHongLouMeng").getAnnotations();
  19.             for(Annotation  a : annotation)
  20.             {
  21.                 System.out.printf("作者:%s%n", ((BookAuthor)a).name());
  22.                 System.out.printf("他的电子邮件(可能已被注销):%s%n", ((BookAuthor)a).email());
  23.             }
  24.         }
  25.         catch (SecurityException e)
  26.         {
  27.             e.printStackTrace();
  28.         }
  29.         catch (NoSuchMethodException e)
  30.         {
  31.             e.printStackTrace();
  32.         }
  33.     }
  34. }
  35.  
  36.  


 

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

@Retention(RetentionPolicy.RUNTIME)

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

 

这是对注释的注释。

编译这两个文件:

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

J2SE5.0新特性之元数据

元数据,在java中也叫注释、注解。微软的.net从开始设计时就有这个功能,不过它的术语叫属性。这时一个强大的功能,程序员如果想挣钱,得好好研究它,因为在将来的j2ee开发中,广泛的使用它,包括ejb...
  • ziziq
  • ziziq
  • 2005年06月06日 23:17
  • 519

J2SE5.0新特性之元数据

J2SE5.0新特性之元数据晁岳攀 smallnest@163.com 元数据,在java中也叫注释、注解。微软的.net从开始设计时就有这个功能,不过它的术语叫属性。这时一个强大的功能,程序员如果想...
  • smallnest
  • smallnest
  • 2004年12月08日 09:45
  • 1239

J2SE5.0新特性之元数据 [转载]

元数据,在java中也叫注释、注解。微软的.net从开始设计时就有这个功能,不过它的术语叫属性。这时一个强大的功能,程序员如果想挣钱,得好好研究它,因为在将来的j2ee开发中,广泛的使用它,包括ejb...
  • alexmajy
  • alexmajy
  • 2005年10月06日 14:31
  • 796

J2SE5.0新特性之静态导入

J2SE5.0新特性之静态导入晁岳攀 smallnest@163.com J2se5.0之前,如果需要使用其他类的静态方法,如java.lang.Math中的方法,需要写以下的代码:double va...
  • smallnest
  • smallnest
  • 2004年12月08日 09:44
  • 1186

J2SE5.0新特性之枚举类型

J2SE5.0新特性之枚举类型 晁岳攀 smallnest@163.com 考虑再三,sun还是把枚举类型增加到java语言中,在传统的设计中,为了达到c、c++的枚举的功能,我们一般在类中声明几个常...
  • smallnest
  • smallnest
  • 2004年12月08日 09:40
  • 1346

J2SE5.0新特性之可变长参数

有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法:1.  重载,多重载几个方法,尽可能的满足参数的个数。显然这不是什么好办法。2.  将参数作为一个数组传入。虽然...
  • ziziq
  • ziziq
  • 2005年06月06日 23:19
  • 425

J2SE5.0新特性之可变长参数

J2SE5.0新特性之可变长参数晁岳攀 smallnest@163.com 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法:1.  重载,多重载几个方法,尽可能...
  • smallnest
  • smallnest
  • 2004年12月08日 09:44
  • 1320

J2SE5.0新特性之ProcessBuilder

这个例子使用了J2SE5.0的ProcessBuilder类执行外部的程序,相对于 Runtime.exec ,它更方便,可以设置环境变量等。这里使用它在windows下读取物理网卡的地址    pa...
  • wangyongligood
  • wangyongligood
  • 2007年10月22日 22:35
  • 212

J2SE5.0新特性之Foreach

J2SE5.0新特性之Foreach晁岳攀 smallnest@163.com C#中提供了Foreach的用法:foreach (string item in f){   Console.Write...
  • smallnest
  • smallnest
  • 2004年12月08日 09:42
  • 1350

J2SE5.0新特性之注解

一、什么是注解 说起注解,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE...
  • ghp517826
  • ghp517826
  • 2013年05月17日 19:48
  • 328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2SE5.0新特性之元数据
举报原因:
原因补充:

(最多只允许输入30个字)