PROPOSAL: Auto-assignment Parameters

Stephen Colebourne scolebourne at joda.org
Wed Mar 25 16:07:21 PDT 2009


Mark Mahieu wrote:
>     class Proposal {
>         private final String name;
>         private final String author;
>         private boolean suitableForCoin;
>         private Integer score;
>         public Proposal(String this.name,
>                         String this.author,
>                         boolean this.suitableForCoin,
>                         int this.score) {
>             if (name.equals(“Auto-assignment Parameters”)) {
>                suitableForCoin = true; // final so compile-time error
>             }
>         }
>     }

Very cool. I like it.

> DESIGN ALTERNATIVES:
> 
> The following variations have been explored and are worth mentioning:
> 
> * Allow auto-assignment parameters on all non-abstract methods.
>     This may be especially useful on the extremely common 'setter' methods
> in 'value object' classes.

I think its right to leave this out for now, pending more investigation 
into a bigger properties solution.

> * Remove the requirement for (or even disallow) the type to be specified on
> auto-assignment parameters.
>     Experimentation with this idea suggests that it may work quite well for
> constructors, further emphasising the difference in intent and semantics
> from those of normal parameters. However, it may not work so well in
> combination with auto-assignment parameters on all non-abstract methods, and
> requires a change to the order in which javac compiles classes (can still
> pass jtreg tests).

The inference can be added later. It doesn't feel quite right.

> * Allow an alternative name to be specified.
>     This adds additional complexity to support a fractional percentage of
> cases, which could continue to use the existing coding pattern.

Not worth it.

Stephen




More information about the coin-dev mailing list