有一个原因不直接在代码中使用常量。
假设FOO稍后可能会更改(但仍保持不变)
public static final int FOO =10;。只要没有人愚蠢到直接对值进行硬编码就不会破坏任何内容吗?
否。Java编译器会将上面的Foo等常量内联到调用代码中,即
someFunc(FooClass.FOO);变成
someFunc(5);。现在,如果您重新编译库而不是重新编译调用代码,则可能会遇到令人惊讶的情况。如果您使用某个函数,则可以避免这种情况-
JIT仍会对其进行优化,因此实际性能不会受到影响。



