我有一个类,里面有一些小类,它们充当常量的“存储单元”。问题是,我需要一些信息来为这些常量赋值,而我只能在构造函数中获得该信息。不幸的是,miniclass 没有在构造函数中声明,NetBeans 告诉我不能分配给 final 变量,即使它只是被声明,没有被初始化。我该怎么办?
编辑:一些可能有此问题的代码示例:
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;
}
}
最佳答案
您尝试执行的操作无法正常工作,因为您在某处需要一个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);
}
}
然后你可以调用:
Car car = new Car("abc", "def");
String make = car.constants.MAKE;
注意:一个可能更好(也更简单)的设计是
public class Car {
private final String make;
private final String regNumber;
public Car(String make, String regNumber) {
this.make = make;
this.regNumber = regNumber;
}
//getters
}
关于java - 单独声明并分配给最终变量 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373673/