【发布时间】:2012-09-11 15:57:37
【问题描述】:
我有一个类,里面有一些小类,它们充当常量的“存储单元”。问题是,我需要一些信息来为这些常量赋值,而我只能在构造函数中获取这些信息。不幸的是,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;
}
}
【问题讨论】:
-
我猜你的“迷你类”也需要构造函数。然后外部类构造函数可以传递参数。
-
规则是所有非静态
final字段必须在包含它们的类的构造函数完成时分配(即在它们的声明中,在实例初始化程序块中,或者在每个构造函数的代码中)。 -
这个例子对我来说没有多大意义 - MAKE 是一个实例变量,你试图在赋值语句中将它称为静态变量。