Constructor annotation

Richard Bair richard.bair at oracle.com
Wed Oct 16 07:36:05 PDT 2013


+1 this is my preference. It is useful for things other than FXML, and should be considered part of our javafx.beans API.

> On Oct 16, 2013, at 4:20 AM, Tom Schindl <tom.schindl at bestsolution.at> wrote:
> 
>> On 16.10.13 11:22, Eva Krejcirova wrote:
>> Hi All,
>> 
>> when we retired builders, we caused a problem for FXML which doesn't
>> have a way to create classes without default constructors. Back then we
>> decided to use an annotation for this but never actually got to
>> implement it and we need to fix this for FX8. I am in the process of
>> adding this functionality to FXMLLoader but we need to decide how the
>> annotation will look like and I could use some help with this.
>> 
>> We cannot use already existing ConstructorProperties for this, because
>> it's java.beans package and we don't want to create to dependency on
>> this package in JavaFX, so we need to introduce a new annotation.
>> 
>> We have two options:
>> 
>> 1. Annotate the whole constructor:
>> e.g.
>>    @ConstructorArguments({"a", "b", "list"})
>>    public ImmutableClass(int a, int b, Integer... list)
>> 
>> 2. Annotate the arguments:
>> e.g.
>>    public ImmutableClass(@FXMLArgument("a") int a,
>> @FXMLArgument("b")int b, @FXMLArgument("list")Integer... list)
>> 
>> 
>> Which option do you like more and how should the annotation be named?
> 
> Option 2, but does it really have to hold FXML in the annotation name?
> Where would you put the annotation? I think it should NOT be in the
> FXML-Package-Namespace because the core should NOT depend on FXML!
> 
> I'd go with @Argument or simply @NamedArgument (@Named is already used
> by javax.inject)
> 
> Tom


More information about the openjfx-dev mailing list