“公共静态决赛”还是“私人静态决赛”与 getter?

2022-08-31 16:57:14

在Java中,它被教导变量应该保持私有以实现更好的封装,但是静态常量呢?这:

public static final int FOO = 5;

结果将等效于:

private static final int FOO = 5;
...
public static getFoo() { return FOO; }

但哪种做法更好呢?


答案 1

有一个原因不在代码中直接使用常量。

假设 FOO 以后可能会更改(但仍保持不变),请说 。只要没有人愚蠢到直接对值进行硬编码,就不应该破坏任何东西吗?public static final int FOO = 10;

不。Java编译器会将上面的Foo等常量内联到调用代码中,即 成为。现在,如果您重新编译库而不是调用代码,则最终可能会遇到令人惊讶的情况。如果您使用函数,则可以避免这种情况 - JIT仍然会很好地优化它,因此没有真正的性能影响。someFunc(FooClass.FOO);someFunc(5);


答案 2

由于最后一个变量以后无法更改,因此如果您要将其用作全局常量,只需将其公开即可,而无需 getter。


推荐