gpt4 book ai didi

java - java中使用常量作为注解参数

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:27 29 4
gpt4 key购买 nike

  1. 为什么一定要定义为public static final?

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

是因为在@interface中只能使用public static 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 编译器都这样做),因此需要特定的名称。

关于java - java中使用常量作为注解参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53573991/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com