Chr*_*ins 48 java static final private public
在Java中,它教导变量应保持私有以实现更好的封装,但静态常量呢?这个:
public static final int FOO = 5;
Run Code Online (Sandbox Code Playgroud)
结果与此相当:
private static final int FOO = 5;
...
public static getFoo() { return FOO; }
Run Code Online (Sandbox Code Playgroud)
但哪种更好的做法?
Voo*_*Voo 63
有一个原因是不在代码中直接使用常量.
假设FOO可能会在稍后改变(但仍保持不变),比如说public static final int FOO = 10;
.只要没有人愚蠢直接硬编码这个值,不应该破坏任何东西吗?
不可以.Java编译器会将诸如Foo之类的常量内联到调用代码中,即someFunc(FooClass.FOO);
成为someFunc(5);
.现在,如果你重新编译你的库而不是调用代码,你可能会在令人惊讶的情况下结束.如果你使用一个函数就可以避免这种情况 - JIT仍然可以很好地优化它,因此没有真正的性能.
因为如果你将它作为一个全局常量使用它,以后不能改变最终变量,只需公开它就不需要getter.
归档时间: |
|
查看次数: |
24602 次 |
最近记录: |