Type equality for values

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Fri Aug 1 18:23:01 UTC 2014


Right - I would expect that to already be working (modulo the fact that 
I have not really tested integration of 'any' with value types that much 
- yet).

Maurizio

On 01/08/14 11:07, Brian Goetz wrote:
> Certainly if we cannot prove T=U then I think this equality comparison makes no sense.  But if we have
>
>    <any T> boolean foo(A<T> a, A<T> b) { return a==b; }
>
> this does make sense (assuming we are comparing values for state equality via ==).
>
>
> On Aug 1, 2014, at 10:10 AM, Paul Govereau <paul.govereau at oracle.com> wrote:
>
>> The following code is valid for reference types:
>>
>> class A<T> {
>>     int x = 0;
>>
>>     <T,U> boolean foo(A<T> a, A<U> b) {
>>         return (a == b);
>>     }
>> }
>>
>> However, I don't think this makes sense for value types. In the case of reference types, the "top" is a realizable type, namely Object; but, for values the "top" is not realizable?
>>
>> final __ByValue class A<T> {
>>     final int x = 0;
>>
>>     <any T, any U> boolean foo(A<T> a, A<U> b) {
>>         return (a == b);  // <<--- type error ??
>>     }
>> }
>>
>> Should this be a type error?
>>
>> Paul



More information about the valhalla-dev mailing list