单独声明并分配给最终变量 - Java

Blu*_*ire 1 java variables constants

我有一个类,里面有一些小类,它们作为常量的"存储单元".问题是,我需要一些信息来为这些常量赋值,而我只在构造函数中获取该信息.不幸的是,miniclass没有在构造函数中声明,NetBeans告诉我,我不能分配给最终变量,即使它只被声明,也没有初始化.我该怎么办呢?

编辑:一些会出现此问题的代码示例:

public class Car {
    class constants {
        public final String MAKE;
        public final String REGISTRATION_NUMBER;
    }
    public Car(String make, String regNumber) {
        constants.MAKE = make;
        constants.REGISTRATION_NUMBER = regNumber;
    }
}
Run Code Online (Sandbox Code Playgroud)

ass*_*ias 9

你想要做的事情无法发挥作用,因为你需要某个Constants类的实例.一种方法是如下所示,但那个常数没有任何常数......

public class Car {
    class Constants {
        public final String MAKE;
        public final String REGISTRATION_NUMBER;
        private Constants(String make, String regNumber) {
            this.MAKE = make;
            this.REGISTRATION_NUMBER = regNumber;
        }
    }

    public final Constants constants;
    public Car(String make, String regNumber) {
        this.constants = new Constants(make, regNumber);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以打电话:

Car car = new Car("abc", "def");
String make = car.constants.MAKE;
Run Code Online (Sandbox Code Playgroud)

注意:可能更好(和更简单)的设计

public class Car {
    private final String make;
    private final String regNumber;

    public Car(String make, String regNumber) {
        this.make = make;
        this.regNumber = regNumber;
    }

    //getters
}
Run Code Online (Sandbox Code Playgroud)

  • 第二个例子更简单,更容易被其他人看到代码,因为它遵循公认的Java实践.建立一个内部类来保持这些领域是过度的. (6认同)