RefObject and ValObject
maurizio.cimadamore at oracle.com
Mon Apr 15 20:53:49 UTC 2019
I think we should be ok inference-wise, except of course for edge cases
(like vars) which exposes the guts of the inference engine.
In normal cases like:
List<Object> list = List.of(new Foo(), new Bar())
the equality constraint on the LHS should force a solution which
overrides the new 'RefObject' bound that comes in from the RHS.
(that is, you have T = Object, then T :> Foo and T :> Bar, so T = Object
'wins', even if less precise)
On 15/04/2019 21:39, Brian Goetz wrote:
>> 1) any codes that has inference
>> var list = List.of(new Foo(), new Bar());
>> will be inferred as List<RefObject> instead of List<Object>, so
>> calling a method that takes a List<Object> will not compile anymore.
> Not to dismiss the “what about inference” issue, but any code that
> combines `var` with `List,of()` should not be surprised at the result
> of inference ….
> But, “what about inference” noted.
>> 2) any code that consider Object as special class may stop working,
>> dynamic proxies that have a special case for Object, any code that
>> reflect recursively on the hierarchy to find all the methods, any
>> code that remove getClass() from the getter list, etc.
> Absorbing value types is going to require some changes on the part of
> most frameworks to get best results. This one seems in that category?
> Again, not to dismiss, keep them coming, but so far this isn’t scaring
> me away from having the object model that makes most sense.
More information about the valhalla-spec-observers