这些Java注释有什么function?

我还不清楚Java中注释的目的。 最初我认为他们只是作为文档。 但是从Google App Engine数据存储区查看此文档,我不太确定。 @PersistenceCapable(identityType = IdentityType.APPLICATION)看起来更像是方法签名。

这种注释的目的是什么? 它有什么作用?

import java.util.Date; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.IdentityType; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; @PersistenceCapable(identityType = IdentityType.APPLICATION) public class Employee { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private String firstName; @Persistent private String lastName; @Persistent private Date hireDate; public Employee(String firstName, String lastName, Date hireDate) { this.firstName = firstName; this.lastName = lastName; this.hireDate = hireDate; } // Accessors for the fields. JDO doesn't use these, but your application does. public Long getId() { return id; } public String getFirstName() { return firstName; } // ... other accessors... } 

它们是源级元数据。 它们是一种向代码添加信息的方式,这些代码不是代码,而且很容易通过机器处理。

在您的示例中,它们用于为该实体类型配置对象关系映射。 它说,例如,id字段应该是该对象的主键,firstName,lastName和hireDate应该存储在数据库中。 (告诉那些字段除了一些瞬态对象状态。)

GAE对JDO的支持需要知道您将尝试在数据库中存储哪些对象。 它通过查看代码中的类来查找使用@PersistenceCapable注释的类。

通常,它们习惯于替换之前使用外部配置文件的位置; Java标准库具有读取代码中的注释的工具,这使得它们比滚动自己的配置文件管道更容易处理,并且免费获得IDE支持。

可以使用注释处理工具API处理注释以自动生成样板代码。

我认为这些来自Java Data Objects API。 这是一个与EJB3应该完成的程度重叠的API。 相同的概念,不同的语法和工具。

如果您不熟悉注释,请查看Java教程。