2017-08-01 30 views
2

我有一个请求类与一些最后的而不是最终字段。在Java类中常量的使用

它只用于一种类型的请求。 但是,发送给它的服务 需要代码来区分操作的类型。 我创建了一个常量,每次都使用Request类进行初始化。 例如:

public class Request { 

    @JsonProperty("const") 
    private static final String CONSTANT = "field" 

    @JsonProperty("data") 
    private int data; 

    public String getConstant() { 
     return CONSTANT; 
    } 

    public int getData() { 
     return this.data; 
    } 
} 

我想过初始化它的构造函数中或明确使用操作代码作为参数的构造, 尽管它永远不会改变。 它应该是静态的最终?

问题是, 这种情况下的最佳做法是什么?

+0

我看到你没有编码的当前方式没有问题。 static final将完成你想要完成的工作 – ja08prat

+1

将公共静态final String CONSTANT =“field”定义为Request.CONSTANT,然后到处可以引用。你不需要吸气剂。 – deepakl

回答

2

静态和最后是两个完全不同的东西:

static应该用于在跨越特定类型(class

声明的字段作为final的所有实例(objects)共享的东西将确保该领域是一个常数,不能改变。

就你而言,在所有实例中共享变量没有问题,因此根据最佳实践将其声明为static final不会成为问题。

0

对于这样的领域,我宁愿使用枚举常量并通过构造器/构建器模式初始化常量字段。只为这样的CONSTANT字段提供Getter方法。