静态最终字符串字段在运行时仅在具有特定值

时间:2017-11-29 13:23:45

标签: java java-ee glassfish

我正在使用Java 7和GlassFish 4.1.1创建Java EE Web项目。我的IDE是NetBeans。

当从存储库类重构一些代码时,我用模型类上的静态final字符替换了字符串“USERS”。在执行此操作(清理和构建)后,我立即从我的服务中获得了IllegalArgumentException,并发现该字段被读为null。

模特课:

public class User {

    public static final String TABLE_NAME = "USERS";
    public static final String PRIMARY_KEY = "ID";

    private String id;    
    private String name;

    public User(String id, String name) {
        this.id = id;
        this.name = name;
    }

}

用户存储库,之前:

public List<User> get() throws RepositoryException
{
    try {
        return service.retrieve("USERS");
    } catch (SQLException ex) {
        throw new RepositoryException("Retrieval failed.", ex);
    }
}

用户存储库,在:

之后
public List<User> get() throws RepositoryException
{
    try {
        return service.retrieve(User.TABLE_NAME);
    } catch (SQLException ex) {
        throw new RepositoryException("Retrieval failed.", ex);
    }
}

关于这个可能最奇怪的事情(但可能很有启发性?)是,如果我改变字段的值,问题就会消失。

// This works!
public static final String TABLE_NAME = "USERSS";

当然,TABLE_NAME的价值现在是错误的。

这是我尝试过的:

  • 寻找编译错误(没有)
  • 清理并构建
  • 从GlassFish取消部署,然后重新部署
  • 重新启动NetBeans
  • 使该领域不是最终的
  • 谷歌

非常感谢任何帮助! :)

0 个答案:

没有答案