Java Reference
In-Depth Information
Object literal initialization
Another aspect of JavaFX class usage is object declaration. JavaFX supports object-literal-
declaration to initialize a new instance of the class. This format lets developers declaratively
create a new instance of a class using the class's literal representation and pass in property
literal values directly into the initialization block to the object's named public properties.
var vehicle = Vehicle
{
year
:2010
color
: "Grey"
make
:"Mini"
model
:"Cooper"
};
The previous snippet declares variable
vehicle
and assigns to it a new instance of the
Vehicle class with
year = 2010
,
color = Grey
,
make = Mini
, and
model = Cooper
.
The values that are passed in the literal block overwrite the default values of the named
public properties.
There's more...
JavaFX class definition mechanism does not support a constructor as in languages such as
Java and C#. However, to allow developers to hook into the life cycle of the object's instance
creation phase, JavaFX exposes a specialized code block called
init{}
to let developers
provide custom code which is executed during object initialization.
Initialization block
Code in the
init
block is executed as one of the final steps of object creation after properties
declared in the object literal are initialized. Developers can use this facility to initialize values
and initialize resources that the new object will need. To illustrate how this works, the previous
code snippet has been modified with an
init
block. You can get the full listing of the code at
ch01/source-code/src/javafx/Vehicle2.fx
.
class Vehicle {
...
init
{
color = "Black";
}
function drive () : Void {
println("You are driving a "
"{year} {color} {make} {model}!");
}
}
var vehicle = Vehicle {
year:2010