[英]Using constants for annotation parameters in java
為什么必須將其定義為公共靜態決賽?
為什么我必須導入它們,因為它們在當前課程中是默認的?
是因為在@interface中您只能使用公共靜態final字段嗎?
導入是否需要做一些優化?
即
**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編譯器都禁止這樣做),因此需要特定名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.