我有一个Request类,其中包含许多final和非final字段。
它仅用于一种类型的请求。 但服务, 发送给谁, 需要一个代码来区分操作类型。 我创建了一个常量,每次使用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 :(得分:2)
静态和最终是两个完全不同的东西:
static
应该用于在特定类型(objects
)的所有实例(class
)之间共享的内容
将字段声明为final
将确保该字段为常量且无法更改。
在您的情况下,在所有实例中共享变量没有问题,因此根据最佳做法将其声明为static final
不会成为问题。
答案 1 :(得分:0)
对于这些字段,我更喜欢使用Enum常量并通过Constructor / Builder模式初始化Constant字段。仅为此类CONSTANT字段提供Getter方法。