如果最终变量仅在一个静态方法中使用,我应该将其声明为类中的最终静态成员,还是静态方法中的最终变量。
如果在方法内部声明,则每次调用函数时都会初始化它。 (函数被调用很多次)
编辑:变量是使用List
函数
Arrays.asList(...)
答案 0 :(得分:1)
如果在方法内部声明,则每次调用函数时都会初始化它。 (函数被调用很多次)
是。如果在方法中声明变量,则每次调用方法时都会调用Arrays.asList(...)
。
如果您的变量具有昂贵的初始化和/或多次调用该方法,则应将其声明为private static final
字段。
答案 1 :(得分:0)
理想情况下,您希望它在方法本身中成为static final
。但Java不支持这一点。 (顺便说一句,C ++确实如此)。
除非变量是对具有启动开销的对象的引用,否则我将它保持为本地并在方法中写入final
,而不是用{{1来污染类命名空间这只是在一个函数中使用的。我相信编译器可以进行任何优化。或者,创建一个内部类并在那里声明它。
答案 2 :(得分:0)
是的,可以使用final static
。该元素只会初始化一次:在加载类时。你可以多次使用它。