簡體   English   中英

在Java中使用常量作為注釋參數

[英]Using constants for annotation parameters in java

  1. 為什么必須將其定義為公共靜態決賽?

  2. 為什么我必須導入它們,因為它們在當前課程中是默認的?

是因為在@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM