使用Java Annotation

       Annotation(注解)是JDK5+的特性。在使用Spring和Hibernate的过程中,碰到大量的Annotation,其中Hibernate的Annotation是支持JPA产生的,JTA已经成为Java EE的一个标准。因此Annotation是必须掌握的。

      为什么要使用Annotation呢?之前看到一篇文章,说Annotation其实可以解决Java不能extends多个类的这一问题,赞成。

      还有,像Spring这么一个大容器,Annotation使得它的许多容器类的方法从参数接口中解放出来,从而让我们使用者直接面对POJO编程,从这一点讲,Annotation的角色变成了一个“Interpreter”。

      对于大多数Programmer而言,在JPA中,Annotation其实就是OR-Mapping XML文件的替代者。注意,JPA中的Annotation都是RUMTIME的,从灵活性的角度将,我们往往希望使用配置文件而不是Annotation。

 

 

下面是我common-util下的一个关于Java代码的注释:终于通过这个例子让我彻底掌握了Annotation这东东。

 

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface JavaSource {
    String author() default "treeClimber"; /* 作者 */
    String email() default "xionglb@163.com"; /* 联系E_Mail */
    String company() default "www.treeClimber.cn"; /* 公司名 */
    String project() default "common-util"; /* 所属项目 */
    String descript(); /* 类描述 */
    float version() default 1.0f; /* 版本号 */
    String created(); /* 创建时间 */

}

 

@Target( { ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface LastModified {
    int year();
    int month();
    int date();
    String modifier();
    String descript();
    String format() default "yyyy-MM-dd";
}

 

@JavaSource(version = 1.5f, project = "demoproj", descript = "学习Java5 Annotation", created = "2010-04-12")
public class JavaSourceTest {

    @LastModified(modifier = "xiongsl", year = 2010, month = 5, date = 5, descript = "Add the Method")
    public void say(String world) {
        System.out.println("Hello, " + world);
    }

    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        if (JavaSourceTest.class.isAnnotationPresent(JavaSource.class)) {
            JavaSource anno = JavaSourceTest.class.getAnnotation(JavaSource.class);
            System.out.println("Author:" + anno.author());
            System.out.println("Company:" + anno.company());
            System.out.println("Descript:" + anno.descript());
        }
        try {
            Method m = JavaSourceTest.class.getDeclaredMethod("say", String.class);
            LastModified anno = m.getAnnotation(LastModified.class);
            Date date = new Date(anno.year(), anno.month() - 1, anno.date());
            System.out.println("LastModified by " + anno.modifier() + " At "
                    + new SimpleDateFormat(anno.format()).format(date) + ", Note:"
                    + anno.descript());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值