Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1326053
  • 博文数量: 436
  • 博客积分: 7854
  • 博客等级: 少将
  • 技术积分: 3225
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-18 16:30
文章分类

全部博文(436)

文章存档

2013年(2)

2012年(56)

2011年(70)

2010年(308)

分类:

2010-11-11 13:36:02

Java标注是语言5.0版本开始支持加入的特殊语法

Java语言中的类、方法、变量、参数和包等都可以被标注。Java标注和不同,标注有自反性。在生成时,标注可以被嵌入到中,由执行时获取到标注


实例

  // @Twizzle标注toggle()方法。
@Twizzle
public void toggle() {
}

// 声明Twizzle标注
public @interface Twizzle {
}

标注可以包括一个关键字和值的对构成的列表:

  //等同于 @Edible(value = true)
@Edible(true)
Item item = new Carrot();

public @interface Edible {
boolean value() default false;
}

@Author(first = "Oompah", last = "Loompah")
Book book = new Book();

public @interface Author {
String first();
String last();
}

标注声明中可以用标注说明使用方式、时间和对象:

  @Retention(RetentionPolicy.RUNTIME) // 该标注可以在运行时通过反射访问。
@Target({ElementType.METHOD}) // 该标注只用于类内方法。
public @interface Tweezable {
}

编译器保留一组标注用于特定语法目的 (包括 @Deprecated, @Override@SuppressWarnings等)。

标注通常用于软件为用户定义的类和方法提供引用外部资源的情形,如XML配置文件、事务环境等。以下是一个标注过的EJB 3.0的类:

  @Entity                                           // 声明实体类
@Table(name = "people") // 映射该类到 "people"表
class Person implements Serializable {
@Id // 映射到主键
@GeneratedValue(strategy = GenerationType.AUTO) // 数据库自动生成键值
private Integer id;

@Column(length = 32) // 限长32个字符
private String name;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

以上代码中标注不执行任何特定行为,而是为在运行时,EJB容器获得足够的信息,生成对象到关系数据库的映射。

阅读(486) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~