为什么必须将其定义为public static final?
为什么我必须导入它们,因为它们已在当前类中定义?
是因为在@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";**
答案 0 :(得分:0)
因为注释值是由编译器而不是在运行时解释的,所以它们必须是编译时常量; FINDALL
不必为public
,但必须为static final
才能使其恒定。
注释本身在技术上不在其所应用的类的外部,因此该类的成员不在其内部。从理论上讲,您可以在一个文件中有多个类定义(JLS建议编译器禁止这样做,而我所知道的所有Java编译器都禁止这样做),因此需要特定名称。