对于将映射到fxml控件的fxml控制器类,例如:
public MyController
{
@FXML
private Button button;
}
是否可以将button
字段声明为final?如果完成,java编译器(javac)将标记有关该字段未被初始化的错误。
据了解,按钮字段最终将使用@FXML注入进行初始化。虽然,javac并不完全理解这一点,甚至不会如何理解。
虽然可能不需要最终限定符,但最好尽量减少潜在的与可变性相关的错误,特别是在从不打算改变的情况下。
虽然我不了解fxml工作原理如何初始化其组件的复杂性,除了它使用反射。话虽如此,并且通常对于依赖注入和反射的领域,那么最终的限定符不能存在于这样的领域?
答案 0 :(得分:1)
必须至少在类的构造函数中定义final字段。使用@FXML注入时,将在使用反射调用构造函数之后注入/定义字段。因此,您无法将它们定义为最终版本。