Paving the on-ramp

John Rose john.r.rose at oracle.com
Thu Sep 29 22:20:11 UTC 2022


On 28 Sep 2022, at 13:49, Remi Forax wrote:

> - We should not be able to declare fields inside a classless class, 
> students strugle at the beginning to make the difference between a 
> field and a local variable.
> Every syntax that make that distinction murkier is a bad idea.
> So perhaps what we want is a classless container of methods, not a 
> classless class.

Hmmm…  That would be an interface.  I’ll pull on that thread a 
little:

An interface has no non-static fields and (bonus) its static fields are 
always constant.  So you can teach interface *as a container* without 
getting into mutability.

Methods would have to be implicitly decorated with `default` in an 
anonymous *interface*.

The execution of an instance-main anonymous interface would look almost 
*exactly* like that for a class:

`public static void main(String[] av) { new <ThisClass>(){}.main(); }`

The only difference is the `{}`.  Abstracts would be forbidden in an 
anonymous interface:  Every method has a body, just as every field has 
an initializer.

Bonus:  No instance initializers, since it’s an interface. (No 
constructors either.)  So the headaches about initialization-related 
syntaxes go away without additional special pleading.

Objection:  *That’s no interface!*  Well, true.  Except it is an 
interface to the system, being a launch point.  (Is that just a bad 
pun?)  Also, folks use interfaces today as an idiom for a lightweight 
container of Java code (at least, I do that).

Bonus:  If the “instance main” feature is supported *only for 
interface containers* then some issues of accidentally creating a main 
(in existing code) go away, simply because the attack surface (for 
accidents) gets smaller.  Yes, that’s a yucky bonus.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-spec-observers/attachments/20220929/4eae8766/attachment.htm>


More information about the amber-spec-observers mailing list