TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
元数据,在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
新建一个注释类型,这个类型指明了一本名著的作者和他的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="caoxueqin@hongloumeng.books")
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) //也可能时其他类型,如针对声明的注释
这是对注释的注释。
编译运行这两个文件:
C:java>java MetadataShow
作者:曹雪芹
他的电子邮件(可能已被注销):caoxueqin@hongloumeng.books C:java>
源码下载:http://www.hnzz3z.com:8103/zz3zcwb/cwb/dir2/meat.zip |
|