在java中使用常量作为注释参数


  1. 为什么必须定义为public static final?

  2. 为什么我必须导入它们,因为它们在当前类中是def?

是因为在@interface中只能使用公共静态最终字段吗?

导入是否必须进行优化?

**import static db.Rezervare.FINDALL;**
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@Entity
@Table(name = "rezervari")
@NamedQueries(
@NamedQuery(name = **FINDALL**, query = "SELECT r FROM Rezervare r ORDER BY r.nume")
)
public class Rezervare {
**public static final String FINDALL = "Rezervare.findAll";**

因为注释值是由编译器解释的,而不是在运行时解释的,所以它们必须是编译时常数;FINDALL不一定是public,但它确实需要是static final才能使其成为常数。

从技术上讲,注释本身在应用它的类之外,所以类的成员不在其中。理论上,你可以在一个文件中有多个类定义(JLS建议编译器不允许这样做,我认识的所有Java编译器都不允许(,所以需要特定的名称。

最新更新