我应该更喜欢 class 中的最终静态变量还是静态方法中的最终变量

Should I prefer final static variable inside class or final variable inside a static method

假设final变量仅在一个静态方法中使用,我应该将其声明为class中的final静态成员,还是静态方法中的final变量。

如果在方法内部声明,每次调用函数时都会初始化。 (函数被多次调用)

编辑:变量是 List 使用 Arrays.asList(...) 函数初始化的

理想情况下,您希望它成为方法 本身中的 static final 。但是 Java 不支持。 (C++ 顺便说一下)。

除非变量是对具有启动开销的对象的引用,否则我会尽可能将其保留在本地并在方法中写入 final,而不是污染 class 命名空间a final static 仅在一个函数中使用。我相信编译器会进行任何优化。或者,创建一个内部 class 并在那里声明它。

可以,final static可以用。该元素只会初始化一次:在 class 加载时。您可以多次使用它。

If it is declared inside method, will it be initialized each time the function is called. (function is invoked a lot of times)

是的。如果您在方法内声明变量,则每次调用该方法时它都会调用 Arrays.asList(...)

如果您的变量有一个昂贵的初始化 and/or 该方法被调用了很多次,您应该将其声明为一个 private static final 字段。