[External] : Re: JEP update: Classes for the Basic Primitives
Brian Goetz
brian.goetz at oracle.com
Fri Feb 11 23:22:21 UTC 2022
>
>
> And how does that differ from Point.class / Point.ref.class /
> Point.class.noNotThatClassTheOtherClass() ?
>
>
> I realize you're not necessarily asking that question in this thread,
> but I want to walk through how I would respond to it anyway.
>
> First here is what I already take to be true now:
>
> The `java.lang.Class` type doesn't precisely represent a class, but an
> erased type (let's forget about `void.class`). The relationship from
> erased type to class is "1 to 0..1", so for any `j.l.Class` instance
> that does have a related class, that instance can go ahead and
> represent the class too (e.g. iterate over its methods). But the 8
> "basic" primitive types don't have a class, and array types partly
> pretend to be classes, but this is okay.
I think this is giving Class more credit than it might deserve, but
otherwise these arguments seem basically reasonable. Class started out
as 1:1 with .class files, but over time we realized "what about arrays",
"what about primitives", etc. It has been given too many jobs to do, so
it defies having a clear role, but we can try to avoid making it too
much worse.
>
>> * I assume the reason "the JVM type Qjava/lang/Double cannot be
>> encoded with a Class object" is because the distinction between
>> it and D is intentional implementation detail.
> Worse :( The J and D carriers use two slots, so even if we
> wanted to abstract over the primitive carriers, this is kind of a
> dead end. The java/lang/Double class allows us to encode
> List<double> with a class that carries a double but fits in one slot.
>
>
> But... to be clear... it /is /also intentional implementation detail,
> right? In the programming model a user can't care about the distinction?
>
Correct. The existence of the D carrier is an implementation detail of
the VM; if doubles were translated as LFakeDouble; the only thing the
user would notice is that things got slower and heaps got bigger.
More information about the valhalla-spec-observers
mailing list