JDK-8317277 - Java language implementation of value classes and objects
David Alayachew
davidalayachew at gmail.com
Wed Oct 18 23:18:59 UTC 2023
Potentially silly question in regards to the identityHashCode.
Is it possible for an identityHashCode to produce a negative value?
I tried the following, and it is still running. I don't have any window
functions though, so I can't make arbitrary strings, just one character
ones.
$ jshell
| Welcome to JShell -- Version 21
| For an introduction type: /help intro
jshell> new java.util.Random()
...> .ints()
...> .filter(Character::isValidCodePoint)
...> .mapToObj(Character::toChars)
...> .map(String::new)
...> .mapToInt(System::identityHashCode)
...> .filter(a -> a < 0)
...> .findFirst()
If the answer is, no negatives, then I think this would be best. I don't
know if it would be "all value objects are -1", or something else.
On Wed, Oct 18, 2023 at 5:35 PM Archie Cobbs <archie.cobbs at gmail.com> wrote:
> On Wed, Oct 18, 2023 at 3:59 PM Remi Forax <forax at univ-mlv.fr> wrote:
>
>>
>> 1. If v is a value object, what does System.identityHashCode(v) return?
>>
>>
>> A combination of some field values of the object.
>> It has to be fast so the VM should not use all fields if there are a lot
>> of them or if some values are value class (or field type that can
>> potentially store value class) because it will make the computation
>> recursive.
>>
>
> Hmm, that doesn't seem right.
>
> Isn't it hashCode()'s job to produce a value based on the object's
> fields? The whole point of System.identityHashCode() is to NOT do that,
> at least as of today.
>
> I'd expect System.identityHashCode() to return 0 for all value classes or
> throw an exception.
>
> After all, value classes are not supposed to have an identity, right?
>
>
>> 2. If V is a value class, is {Weak,Soft,Phantom}Reference<V> supported?
>>
>>
>> Nope. There is maybe no address/no pointer so no weak reference.
>>
>
> OK. How is this going to be enforced?
>
> -Archie
>
> --
> Archie L. Cobbs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/valhalla-dev/attachments/20231018/9949b01e/attachment.htm>
More information about the valhalla-dev
mailing list