“公共静态决赛”还是“私人静态决赛”与 getter?
在Java中,它被教导变量应该保持私有以实现更好的封装,但是静态常量呢?这:
public static final int FOO = 5;
结果将等效于:
private static final int FOO = 5;
...
public static getFoo() { return FOO; }
但哪种做法更好呢?
在Java中,它被教导变量应该保持私有以实现更好的封装,但是静态常量呢?这:
public static final int FOO = 5;
结果将等效于:
private static final int FOO = 5;
...
public static getFoo() { return FOO; }
但哪种做法更好呢?
有一个原因不在代码中直接使用常量。
假设 FOO 以后可能会更改(但仍保持不变),请说 。只要没有人愚蠢到直接对值进行硬编码,就不应该破坏任何东西吗?public static final int FOO = 10;
不。Java编译器会将上面的Foo等常量内联到调用代码中,即 成为。现在,如果您重新编译库而不是调用代码,则最终可能会遇到令人惊讶的情况。如果您使用函数,则可以避免这种情况 - JIT仍然会很好地优化它,因此没有真正的性能影响。someFunc(FooClass.FOO);
someFunc(5);
由于最后一个变量以后无法更改,因此如果您要将其用作全局常量,只需将其公开即可,而无需 getter。