[J2SE 5.0专题][2.7]注解
注解(Annotations)在我看来是J2SE 5.0中比较重大的新特性。将来的EJB 3.0规范将会全面利用该特性来简化Session Bean、 Message-Driven Bean和EntityBean的定义和实现。Java的注解或多或少也是受了.NET的影响。这不是说Java本来没有注解,以前的诸如JavaDoc的标注,尤其@deprecated,都是注解,只不过这一次的更新将注解推到了Java历史上前所未有的高度。通过注解,我们可以实现原先相对复杂的高级功能。
先看一个实际的例子:
/*
* Created on 2004-12-28
*
*/
import java.lang.annotation.*;
/**
* @author Sean
*
*/
public class MyAnnotations {
@MyAnnotationForMethods (
index = 1,
info = "This is a method to test MyAnnotation.",
developer = "Somebody else"
)
public void testMethod1() {
// ...
}
@MyEmptyAnnotation
@MySingleElementAnnotation("For instruction purpose only.")
@MyAnnotationForMethods (
index = 2,
info = "This method is to show multiple annotations."
)
public void testMethod2() {
// ...
}
}
@Target(ElementType.METHOD)
@interface MyAnnotationForMethods {
int index();
String info();
String developer() default "Sean GAO";
}
@interface MyEmptyAnnotation {
}
@interface MySingleElementAnnotation {
String value();
}
在这个例子中,我先后定义了三个注解:第一个MyAnnotationForMethods包含三个成员,分别是index、info和developer,其中developer有默认值"Sean GAO",前面的@Target(ElementType.METHOD)是对这个注解的注解,说明该注解只能用于方法;第二个MyEmptyAnnotation是一个空的注解,可以作为标记使用,如早先的Serializable接口;第三个MySingleElementAnnotation包含一个成员,value,这个是硬性规定,当只有一个元素时,必须用value这个名称,它的类型可以是值型、String、Class、enum、或者上述数据类型的一元数组。
注解的定义很像接口,但是他们跟接口在用法上又有相当大的区别。具体的用法参考我上面举的例子。注解是可以叠加的。
在实际应用中,目前比较成熟的是一些测试框架,如我在另一篇文章中翻译的原作者Cedric Beust编写的TestNG。而在本文的开始,我曾经提到在将来的EJB 3.0规范中会有相当多的对注解的应用,让我们预览一下将来的无状态会话bean用注解来定义会是什么样子:
@Stateless public class BookShelfManagerBean {
public void addBook(Book aBook) {
// business logic goes here...
}
public Collection getAllBooks() {
// business logic goes here...
}
// ...
}
That@#s it. 我们甚至不用写任何接口和部署描述符,how nice。
有关注解的更详细说明,参考这里。
↓相关文章:
- · J2EE 中使用EntityBean和JDO各有什么优点缺点
- · J2EE 探索者:使用 Java Servlets 2.4 来执行过滤
- · J2EE 探险者:持久数据管理,第 1 部分
- · J2EE探索者:隐式对象的多种用法
- · J2EE 探险者:持久数据管理,第 1 部分
- · Oracle9iAS Containers for J2EE独立版指南--(配置数据源与调用)
- · Oracle9iAS Containers for J2EE独立版指南--(打包与部署)
- · J2EE探索者:用JMS进行企业消息传递[Z]
- · J2EE全面介绍(二)
- · J2EE设计模式:CMP到BMP模式(二)
- · J2EE学习笔记(8) 真是知易行难 初试Struts
- · 开发J2EE应用的要领
- · J2EE项目10大风险
- · J2EE平台WEB组件开发中如何使用定制标签
- · J2EE交易框架:构建框架
- · 应用Rational工具简化基于J2EE项目(四)分析和工具的进展
- · 应用Rational 工具简化基于J2EE的项目 (二)启动项目
- · J2ee学习流程
- · J2EE WEB层的曙光 -- JSF
- · j2ee 笔记 --基础
- · 基于J2EE的三层B/S信息系统研究
- · j2ee随笔(JSP)(语法部分1)
- · j2EE基础概念
- · 当前流行的J2EE WEB应用架构分析
- · J2SE的相关命名和版本号
- · J2EE学习笔记(6) Struts HTML Tags
- · J2EE学习笔记(3) Struts Logic Tags
- · J2EE学习笔记(1) 开篇
- · J2EE设计模式学习笔记之--用实体组件进行数据存取
- · WSAD5.1+oracle9i在一台机器上的问题ora-00600-参考
- · Jboss下MS SQL Server配置指导
- · J2EE应用部署(一):基础篇
- · 漫谈EJB (3)
- · 漫谈EJB (1)
- · J2EE应用部署(二):
- · JBuilder7+Weblogic7+mysql 开发EJB的配置(加入BMP,CMP开发实例)[推荐]
- · apache 2.0.48 + tomcat 5.0.16 配置说明
- · jive3.1.1的安裝
- · Tomcat4.1.x以上中类的加载
- · win2000下apache2+weblogic7实现基于同一个ip地址的多个虚拟主机访问多个weblogic站点
- · Apache2.0.47和Tomcat4.1.27整合过程
- · IBM WebSphere JSP源代码暴露漏洞
- · Tomcat IIS HowTo:将Tomcat装入IIS全攻略
- · CORBA例子(转)————————我也不知道是什麽东东:-)
- · Resin服务器平台介绍

