Comment on Java 21 makes me actually like Java again
PortugalSpaceMoon@infosec.pub 1 year ago
I’m not sure I agree that Void is a bottom type. If so, void-functions would never be able to return/terminate. Java’s void is probably more of a unit type.
BatmanAoD@programming.dev 1 year ago
They allude to this later, acknowledging that it’s sort of a cross between unit and bottom.
aloso@programming.dev 1 year ago
No it’s not, it is 100% a unit type (except it’s not really a type, since you can only use it as return type and nowhere else)
BatmanAoD@programming.dev 1 year ago
It’s not possible to instantiate or assign, which is more like a never type than a unit; and it is not possible to define new types with the same properties, which is also more like bottom than unit. But you’re right that it’s not actually a true never type since it can’t represent function divergence.
I think the truth is just that Java’s type system isn’t very mathematically disciplined.
aloso@programming.dev 1 year ago
Actually, this is because
void
is not a type, it is just a keyword, that is allowed only instead of the return type.If it were a bottom type, that would mean that a method returning
void
must diverge, which is simply not true.Also, even if it were a bottom type, it would be possible to write an “unreachable” method
But it is not, because
void
isn’t a bottom type, it’s no type at all.