在Java中,人们认为变量应该是私有的,以实现更好的封装,但是静态常量呢?这一点:
public static final int FOO = 5;在结果上等同于这个:
private static final int FOO = 5;
...
public static getFoo() { return FOO; }但是,哪种做法更好呢?
发布于 2012-04-07 02:54:30
在代码中不直接使用常量有一个原因。
假设FOO以后可能会改变(但仍然保持不变),比如public static final int FOO = 10;。不应该破坏任何东西,只要没有人愚蠢到直接硬编码值的地步,对吗?
不是的。Java编译器会将像上面的Foo这样的常量内联到调用代码中,即someFunc(FooClass.FOO);变成了someFunc(5);。现在,如果您重新编译库,而不是调用代码,您可能会在令人惊讶的情况下结束。如果你使用一个函数,就可以避免这种情况-- JIT仍然会很好地优化它,因此不会对性能造成真正的影响。
发布于 2012-04-07 02:47:51
因为最后一个变量不能在以后被修改,如果你打算将它作为一个全局常量使用,那就把它设置为公共的,不需要getter。
发布于 2012-04-07 02:48:23
Getter在这里毫无意义,很可能会被JVM内联。只要坚持使用公共常量即可。
封装背后的思想是保护不必要的变量更改,并隐藏内部表示。对于常量来说,这没有多大意义。
https://stackoverflow.com/questions/10047802
复制相似问题