java - 最终变量赋值 : at declaration or in constructor?

标签 java variables static constants

首先,这不是 Initialize final variable before constructor in Java 的精确副本.应该是相关的,但是没有一个让我满意的答案。

我的问题是关于 Swing GUI 中的最终变量。特别是关于自定义Action。 我有一些 final 变量和一些 static final 变量。

问题是:如果变量实际上是常量,哪个更好:在构造时初始化它们,还是在声明时初始化它们?

我上面提到的问题的答案通常指向变量 static ,只要你在声明它时能够分配它。这对我来说真的没有意义,因为变量不在静态上下文中使用。我有几个我的表单像图标一样使用的图像,我将它们设为静态,因为图像只是一个静态的东西,除非您的应用程序修改它们。这是有道理的。

另一方面,Action 是自定义内部类的新实例。从技术上讲,它们也是静态的,但感觉不同。它们只是不能在静态上下文 imo 中可用。我也是这样说的:

private final CustomAction customAction = new CustomAction();

还是在构造函数中初始化它?哪个更好?还是我对 static 的想法有误?

最佳答案

如果字段是一个常量,让它成为类的static final成员,

public class Foo{
    public static final int BAR = ...;
}

否则,在构造函数中初始化字段。

关于java - 最终变量赋值 : at declaration or in constructor?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10093668/

相关文章:

c++ - 为什么我的变量在我设置它们的类之外打印时给出不同的值?

java - Java中serialVersionUID是如何序列化的?

java - FindBugs 错误 : Write to static field from instance method

java - 如何用Xlint编译Maven项目

matlab - 如何获取 Matlab 脚本 (*.m) 文件访问的工作区变量列表?

javascript - 用户输入文本框

c# - 将新的 SqlConnection 实例包装在静态方法中是不好的做法吗?

Java 的 toString() 静态或非静态(基于我的示例)

java - 如何使用 JNI 获取浏览器上当前 Activity 选项卡的进程 ID

java - 不同 DAO 中的 Spring 事务无论如何都不起作用?