java:使用最终静态int = 1比仅仅普通1更好吗?

Omu*_*Omu 5 java

我刚刚看到一个类(一个很大的API模块),其中有很多类似的东西

readParamString(Object params, int index)
Run Code Online (Sandbox Code Playgroud)

他们在那个班级有10个领域

final static int PARAM1 = 1
...
final static int PARAM10 = 10
Run Code Online (Sandbox Code Playgroud)

与readParam函数一起使用

但你也可以使用普通的int readParamString(o, 1);

最终的静态int比使用普通的int更好吗?

Ada*_*ski 15

声明静态最终常量的一个优点是防止在代码中多次引用相同的文字值,这可能会导致不必要的变化; 例如,如果程序员无意中更改了一个文字而没有改变其他文字.

在您的示例中,我将询问使用值1声明常量PARAM1的值,尤其是如果它对包含类是私有的并且仅引用一次.但是,如果字面值有一些语义含义,那么它可能会更有用; 例如

public static final int LOAD_ACTION = 1;
public static final int SAVE_ACTION = 2;
public static final int DELETE_ACTION = 4;
public static final int MOVE_ACTION = 8;
Run Code Online (Sandbox Code Playgroud)

但是,通常会使用枚举而不是此方法.

  • 但是,如果1的值发生变化怎么办?! (2认同)
  • +1,代码中的幻数应始终使用有意义的语义名称定义,以使其可读. (2认同)

Tho*_*sen 9

那太傻了.

提取数字常量的原因是为它们提供一个有名的名称.PARAM1..PARAM10不是很有说服力.


gir*_*iri 1

通过使用关键字进行声明final static int,您将拥有一个整数值为 1 的变量实例。重要的一点是,一旦使用关键字进行声明,该值就无法更改final。否则,您可以更改变量的值。final static如果您不想在代码中的任何位置更改变量值,则可以使用关键字。