java注释中的私有字段
我的JBossSeam应用程序在eclipse中编译没有错误。当我试图手动编译时,我出现了一个错误 STATE\u查询具有私有访问权限 蚂蚁:java注释中的私有字段,java,annotations,javac,Java,Annotations,Javac,我的JBossSeam应用程序在eclipse中编译没有错误。当我试图手动编译时,我出现了一个错误 STATE\u查询具有私有访问权限 蚂蚁: 我怎么能编译呢? p、 这是一件奇怪的事情,但我想这是因为该字段是私有的,但使用前面的类名访问。编译器应该意识到它是从同一个类引用的,但显然不是 因此,将private更改为protected(不优雅,但应该可以工作) 您还可以尝试升级JDK(从而升级javac)。请注意,eclipse使用自己的编译器(而不是javac)这是一件奇怪的事情,但我认为
我怎么能编译呢?
p、 这是一件奇怪的事情,但我想这是因为该字段是私有的,但使用前面的类名访问。编译器应该意识到它是从同一个类引用的,但显然不是 因此,将
private
更改为protected
(不优雅,但应该可以工作)
您还可以尝试升级JDK(从而升级javac)。请注意,eclipse使用自己的编译器(而不是javac)这是一件奇怪的事情,但我认为这是因为字段是
私有的,但使用前面的类名访问。编译器应该意识到它是从同一个类引用的,但显然不是
因此,将private
更改为protected
(不优雅,但应该可以工作)
您还可以尝试升级JDK(从而升级javac)。请注意,eclipse使用自己的编译器(而不是javac)这并不能完全回答这个问题,但我并不认为在查询本身中使用常量有什么意义。我会用这样的东西:
@Entity
@NamedQuery(name = Customer.FIND_ALL, query="select c from Customer c"),
public class Customer {
public static final String FIND_ALL = "Customer.findAll";
// Attributes, constructors, getters, setters
}
常数是公共的,因为。。。我希望能够使用它执行查询:
Query query = em.createNamedQuery(Customer.FIND_ALL);
List<Customer> customers = query.getResultList();
Query Query=em.createNamedQuery(Customer.FIND_ALL);
List customers=query.getResultList();
使用常量作为查询的名称是有意义的,因为您将从多个地方引用它(在调用查询时,从@NamedQuery
注释中),而常量使您的代码更加健壮:它将抵抗键入错误和重构。好处是显而易见的
然而,我个人并不认为在查询本身中使用常数有什么真正的好处。这并不能完全回答这个问题,但我并不认为在查询本身中使用常数有什么意义。我会用这样的东西:
@Entity
@NamedQuery(name = Customer.FIND_ALL, query="select c from Customer c"),
public class Customer {
public static final String FIND_ALL = "Customer.findAll";
// Attributes, constructors, getters, setters
}
常数是公共的,因为。。。我希望能够使用它执行查询:
Query query = em.createNamedQuery(Customer.FIND_ALL);
List<Customer> customers = query.getResultList();
Query Query=em.createNamedQuery(Customer.FIND_ALL);
List customers=query.getResultList();
使用常量作为查询的名称是有意义的,因为您将从多个地方引用它(在调用查询时,从@NamedQuery
注释中),而常量使您的代码更加健壮:它将抵抗键入错误和重构。好处是显而易见的
但是,我个人认为在查询本身中使用常量没有任何真正的优势。欢迎使用。我猜“手动”是指用ant编译?你能进入Eclipse中的首选项并从那里发布编译器设置吗?是的。“手动”是指使用ant编译。我在eclipse中找不到编译器设置。它在哪里?编译器设置并不重要,因为eclipse使用它自己的解析器和编译器进程,它很高兴地编译了Sun的javac阻塞的一些更模糊的结构。大多数问题都与Java1.5代码有关,比如本例中的泛型或注释。我猜“手动”是指用ant编译?你能进入Eclipse中的首选项并从那里发布编译器设置吗?是的。“手动”是指使用ant编译。我在eclipse中找不到编译器设置。它在哪里?编译器设置并不重要,因为eclipse使用它自己的解析器和编译器进程,它很高兴地编译了Sun的javac阻塞的一些更模糊的结构。大多数问题都与Java 1.5代码有关,比如本例中的泛型或注释。请参阅以下相关问题:或query=CurrentModuleState.this.STATE\u query
maybe?@dimafeng它是如何工作的?是同一个编译错误吗?另一个不同的版本?嗯,另一件事是-尝试升级JDK(以及编译器),如果JDK版本中出现问题,eclipse将无法编译该版本,但eclipse编译时没有错误。不正确-eclipse使用自己的编译器,这与javac
或query=CurrentModuleState.this.STATE\u query
可能不同?@dimafeng它怎么不工作?是同一个编译错误吗?另一个不同的版本?好的,另一件事是-尝试升级JDK(以及编译器),如果JDK版本中出现问题,eclipse将无法编译,但是eclipse编译时没有错误。不正确-eclipse使用自己的编译器,这与javac
不同,谢谢。我们决定在公共界面中移动所有查询。谢谢。我们决定在公共界面中移动所有查询。