Los modificadores de acceso en JavaFX y @FXML

arthionne:

Soy nuevo en JavaFX y en unos pocos tutoriales que he visto, había algunas diferencias. En uno de los tutoriales, que siempre se utiliza privatecomo modificador de acceso en la clase del controlador y escribió de esta manera:

@FXML private Button button;

Pero el otro tutorial utiliza siempre pública y no incluyó @FXML en la clase del controlador. Ambos parecen funcionan bien, pero es que hay una diferencia real entre ellos que yo debería saber?

repollo:

De Introducción a FXML :

@FXML

Tenga en cuenta que, en los ejemplos anteriores, los campos miembros controlador y los métodos de control de eventos fueron declarados como públicos para que puedan ser invocadas conjunto o por el cargador. En la práctica, esto no suele ser un problema, ya que un controlador es por lo general sólo son visibles para el cargador FXML que la crea. Sin embargo, para los desarrolladores que prefieren la visibilidad más restringida para los campos de controlador o métodos de controlador, la javafx.fxml.FXMLanotación puede ser utilizado. Esta anotación marcas de un miembro de clase protegida o privada lo más accesible a FXML. Si la clase está anotada está en un módulo llamado, el módulo que contiene esa clase debe openel paquete que contiene al menos el javafx.fxmlmódulo.

En otras palabras, la @FXMLanotación sólo es necesario si el campo o método es que no es pública (es decir, está protegido, paquete-privada, o privado) todavía tiene que ser accesible a FXML. En el contexto de FXML, no hay diferencia entre un campo / método público sin (o incluso con a) @FXMLanotación y un campo que no es pública / método con dicha anotación. La única diferencia es, en general, la visibilidad del campo / método a otro código.

Dicho esto, que por lo general se considera una buena práctica sólo se hacen algo tan visible como tiene que ser. Un campo FXML-inyectada normalmente no tiene razón de ser públicas y tampoco lo hace un evento de controlador de datos método-son de aplicación.

Tenga en cuenta la @FXMLanotación no hace nada especial en un nivel de lengua. La presencia de la anotación simplemente le dice al FXMLLoaderque está bien para tratar de acceder reflexivamente el campo o método a pesar de que no es pública. Es también una buena pista para el desarrollador que el campo o método es manejado por FXML (por ejemplo, campos FXML inyectado casi nunca deben ser inicializados manualmente o reasignados).

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=409901&siteId=1
Recomendado
Clasificación