art*_*rty 4 java javafx access-modifiers fxml
我是 JavaFx 的新手,在我看过的一些教程中,存在一些差异。在其中一篇教程中,他总是private在控制器类中用作访问修饰符,并这样写:
@FXML private Button button;
但其他教程始终使用 public 并且没有在控制器类中包含 @FXML。这两个似乎都工作得很好,但是它们之间有我应该知道的实际区别吗?
从FXML 简介:
@FXML请注意,在前面的示例中,控制器成员字段和事件处理程序方法被声明为公共,因此它们可以由加载程序设置或调用。实际上,这通常不是什么问题,因为控制器通常仅对创建它的 FXML 加载程序可见。但是,对于希望控制器字段或处理程序方法的可见性受到更多限制的开发人员,
javafx.fxml.FXML可以使用注释。此注释将受保护或私有类成员标记为可由 FXML 访问。如果被注释的类位于命名模块中,则包含该类的模块必须open至少包含该模块的包含包javafx.fxml。
换句话说,@FXML仅当字段或方法是非公共的(即受保护的、包私有的或私有的)但需要可由 FXML 访问时,才需要注释。@FXML在 FXML 的上下文中,没有(甚至带有)注释的公共字段/方法和带有所述注释的非公共字段/方法之间没有区别。一般来说,唯一的区别是字段/方法对其他代码的可见性。
也就是说,仅使某些内容达到所需的可见程度通常被认为是良好的做法。FXML 注入字段通常没有理由公开。事件处理程序方法和初始化方法1都不会。它们都是实施细节。
请注意,@FXML注释在语言级别上没有做任何特殊的事情。注释的存在只是告诉您FXMLLoader可以尝试并反射性地访问该字段或方法,即使它不是公开的。这也是对开发人员的一个很好的提示,即该字段或方法是由 FXML 处理的(例如,FXML 注入的字段实际上永远不应该手动初始化或重新分配)。
1.无争论initialize()法。不是您在实现时必须覆盖的那个Initializable,当然它必须是公开的。请注意,建议使用无参数方法而不是实现该接口,如果需要,可以像其他 FXML 注入字段一样注入位置和资源包。我不知道为什么该接口还没有被弃用。
| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |