请教java定义常量的两种方式的异同

算法与编程之美 发布于 2013/05/31 11:07
阅读 4K+
收藏 1

如题,

第一种方式是在interface中定义:

public interface SystemConstants {

	public final static int CONNECTION_TIMEOUT = 30000;
	public final static int SO_TIMEOUT = 60000;// socket timeout
	public final static String PROP_FILE_PATH = "conf.txt";
}
第二种方式是在class中定义常量:
public final class SystemConstants {

	public final static int CONNECTION_TIMEOUT = 30000;
	public final static int SO_TIMEOUT = 60000;// socket timeout
	public final static String PROP_FILE_PATH = "conf.txt";
}
关于上述两种方式定义的常量有何不同之处,请指教,谢谢!


加载中
0
_DeepBlue
_DeepBlue

我通常是这样的

public final class SystemConstants {

	public final static int CONNECTION_TIMEOUT = 30000;
	public final static int SO_TIMEOUT = 60000;// socket timeout
	public final static String PROP_FILE_PATH = "conf.txt";

	private SystemConstants() {}

}

算法与编程之美
算法与编程之美
回复 @阿尔法兽 : 上面的还不太严谨,可参考http://my.oschina.net/gschen/blog/134794
南湖船老大
南湖船老大
看了下别人的意见,这种更科学点
0
MuBeiBei
MuBeiBei

各有各的好处吧,很明显 一个是用接口定义,一个只是普通的类。

接口定义的好处不就是统一管理实现该接口吗。

0
南湖船老大
南湖船老大
我一般都是放Constant接口里,这个接口专门放所有的常量定义,便于JVM处理
南湖船老大
南湖船老大
回复 @justin_cn : 谢谢,这只是我的习惯,确实有不科学的地方。多谢指教,一同进步
算法与编程之美
算法与编程之美
可参考: http://stackoverflow.com/questions/2659593/what-is-the-use-of-interface-constants
算法与编程之美
算法与编程之美
谢谢您的回答,根据您的答案,我查了一些相关的资料,这种在interface中定义常量的方法早期使用的比较多,但是它是对interface的poor use,另外有一种情况可能适合这种定义方式,就是先在借口中定义常量,然后把所有需要使用到该常量的类都实现该接口,有一些项目就是这样做的。
0
Beyond-Bit
Beyond-Bit

interface中定义:接口是一个契约,是不可变的!一般情况下接口中不用定义变量,因为接口是不可实例化的,给常量没有意义!

class中定义常量:就单纯你给的例子代码看,class已经为final 所以其成员变量必须为final



返回顶部
顶部