java – 最终变量赋值:在声明或构造函数中?

首先,这不是Initialize final variable before constructor in Java的完全重复.它可能是相关的,但没有任何答案让我满意.

我的问题是关于Swing GUI中的最终变量.它特别关注自定义操作.
我有许多最终变量和一些静态最终变量.

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

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

另一方面,Actions是自定义内部类的新实例.在技​​术上它们也是静态的,但它只是感觉不同.它们根本不能在静态上下文中使用.所以我把:

private final CustomAction customAction = new CustomAction();

或者我在构造函数中初始化它?哪个更好?或者我在想静态错误的方法?

解决方法:

如果该字段是常量,则使其成为该类的静态最终成员,

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

否则,初始化构造函数中的字段.

上一篇:java – 使用Enum来保存对象常量


下一篇:php – 如何包含一个在类中定义常量的文件(以及它的作用域)