Fxml控制器注入最终字段

时间:2015-01-11 06:36:33

标签: javafx-8 fxml

对于将映射到fxml控件的fxml控制器类,例如:

public MyController
{
    @FXML
    private Button button;
}

是否可以将button字段声明为final?如果完成,java编译器(javac)将标记有关该字段未被初始化的错误。

据了解,按钮字段最终将使用@FXML注入进行初始化。虽然,javac并不完全理解这一点,甚至不会如何理解。

虽然可能不需要最终限定符,但最好尽量减少潜在的与可变性相关的错误,特别是在从不打算改变的情况下。

虽然我不了解fxml工作原理如何初始化其组件的复杂性,除了它使用反射。话虽如此,并且通常对于依赖注入和反射的领域,那么最终的限定符不能存在于这样的领域?

1 个答案:

答案 0 :(得分:1)

必须至少在类的构造函数中定义final字段。使用@FXML注入时,将在使用反射调用构造函数之后注入/定义字段。因此,您无法将它们定义为最终版本。