Java类中常量的使用

Java类中常量的使用,java,coding-style,constants,Java,Coding Style,Constants,我有一个Request类,它有许多final和not final字段 它只用于一种类型的请求。 但是服务,, 它被发送到的目的地, 需要代码来区分操作类型。 我创建了一个常量,该常量将在每次使用Request类进行初始化。 例如: public class Request { @JsonProperty("const") private static final String CONSTANT = "field" @JsonProperty("data") private i

我有一个Request类,它有许多final和not 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;
  }
}
我考虑在构造函数内部初始化它,或者显式地使用操作代码作为构造函数的参数, 尽管它永远不会改变。 它应该是静态的吗

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

静态和最终是两件完全不同的事情:

静态
应用于在特定类型(
)的所有实例(
对象
)之间共享的内容

将字段声明为
final
将确保该字段为常量且不能更改


在您的情况下,在所有实例中共享变量没有问题,因此根据最佳实践,将其声明为
static final
不会有问题。

对于此类字段,我更喜欢使用枚举常量并通过构造函数/生成器模式初始化常量字段。仅为此类常量字段提供Getter方法。

我认为当前的编码方式没有问题。static final将完成您试图完成的任务。最好将其定义为public static final String CONSTANT=“field”,然后将其定义为Request.CONSTANT。你不需要一个getter。