Extending 15.28 to include toString() on an enum constant
Brian Goetz
brian.goetz at oracle.com
Mon Jul 9 13:10:59 UTC 2018
I doubt 303 will ever be able to constant fold a non-final virtual
method in this manner. Enums can override toString(), and can do so via
separate compilation; this seems like it would be too big of a surprise
to users. Virtual methods are much riskier to constant fold than static
ones (in part, because it's action-at-a-distance; a declaration modifier
on a supertype causes folding of a method in a subtype.)
On 7/9/2018 4:52 AM, Maurizio Cimadamore wrote:
> Remi is correct - 303 has the potential to special case toString()
> method calls on enums. One thing that 303 lacks, at least at the
> moment, is the ability to redefine what goes into places where a
> constant expression is expected (case labels, annotations, ...). That
> is, the additional constant propagation occurs *after* type-checking,
> and it's mostly there to support code generation. What you ask would
> have an impact on the language frontend (and would therefore require
> some spec text for it) - I'm unsure as to whether this falls within
> the scope of 303.
>
> Maurizio
>
>
> On 09/07/18 07:39, Remi Forax wrote:
>> JEP 303 (http://openjdk.java.net/jeps/303) allows to build such kind
>> of constants, i don't know if it works in the context of annotations
>> but it's a nice use case.
>
More information about the amber-spec-experts
mailing list