在Java中实现常量的最佳方式是什么?
我见过这样的例子:
public class MaxSeconds {
public static final int MAX_SECONDS = 25;
}
并假设我可以有一个Constants类来包装常量,并将它们声明为static final。 我几乎完全不知道Java,并且想知道这是否是创建常量的最佳方式。
这是完全可以接受的,甚至可能是标准。
(public/private) static final TYPE NAME = VALUE;
其中TYPE
是类型, NAME
是所有大写字母中带空格的下划线的名称, VALUE
是常量值;
我强烈建议不要将常量放在自己的类或接口中。
作为一个方面说明:声明为final并且可变的变量仍然可以改变; 但是,变量永远不会指向不同的对象。
例如:
public static final Point ORIGIN = new Point(0,0);
public static void main(String[] args){
ORIGIN.x = 3;
}
这是合法的, ORIGIN
将成为( ORIGIN
一个点。
我强烈建议不要有一个常量类。 当时似乎是一个好主意,但是当开发人员拒绝记录常量并且类增长到包含500个以上的常量(这些常量根本不相互关联)(与应用程序的完全不同方面有关)时,这通常变成常量文件,完全不可读。 代替:
使用接口来保存常量(由Josh Bloch命名为常量接口模式)是一个糟糕的做法。 以下是乔希建议的:
如果常量与现有类或接口紧密相关,则应将它们添加到类或接口中。 例如,所有盒装数字基元类(如Integer和Double)都会导出MIN_VALUE和MAX_VALUE常量。 如果常量最好被视为枚举类型的成员,则应该使用枚举类型将它们导出。 否则,你应该使用一个不可用的实用程序类来导出常量。
例:
// Constant utility class
package com.effectivejava.science;
public class PhysicalConstants {
private PhysicalConstants() { } // Prevents instantiation
public static final double AVOGADROS_NUMBER = 6.02214199e23;
public static final double BOLTZMANN_CONSTANT = 1.3806503e-23;
public static final double ELECTRON_MASS = 9.10938188e-31;
}
关于命名约定:
按照惯例,这些字段的名称由大写字母组成,并用下划线分隔。 这些字段包含原始值或对不可变对象的引用至关重要。
链接地址: http://www.djcxy.com/p/40899.html上一篇: What is the best way to implement constants in Java?
下一篇: Dividing a string by type of data inside each line of file in python