我有一个类,里面有一些小类,它们作为常量的“存储单元”。问题是,我需要一些信息来为这些常量赋值,而我只在构造函数中获取该信息。不幸的是,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;
}
}
答案 0 :(得分: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);
}
}
然后你可以打电话:
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
}