Coming from the Java world, most access modifiers in JavaFX make sense to me as they have equivalents in Java (although the syntax is slightly changed). What isn't in Java are the two access modifiers
public-init, and at least to me, it is not immediately clear what these modifiers do.
It turns out that
public-read means pretty much just that - that the variable can be publicly read from anywhere, but that it can only be written to within the script which declares it. It is possible to 'widen' the write-access by prepending either
protected before the
public-read, but this has no effect on the read-access, which remains at publicly accessible.
public-init access modifier defines a variable that can be publicly initialized in any package. Subsequent write access, however, is controlled in the same manner as
public-read, as detailed above. Because of this, the value of this variable is always readable from any package.
So, in summary, when you see anything declared
public-*, you should think that the variable can always be publicly read, but it has limitations on being written to. The ability to write to the variable is only available to code within the same script as the variable, unless it has been modified with
For further information and examples, check out the JavaFX Language Tutorial, particularly the section on access modifiers.
Thoughts on “JavaFX: Let's clarify public-read and public-init”