Idea how to implement VT/VO compatibility in JVM
Stéphane Épardaud
stef at epardaud.fr
Thu Jan 22 13:51:49 UTC 2015
On 01/22/2015 02:46 PM, Vitaly Davidovich wrote:
>
> Yes, but I'm not proposing to handle every value type (which is
> impossible anyway since you don't know the set). Instead, what would
> be nice is to allow calling <any T> methods at runtime by providing
> the T parameter at that point, after getting it via reflection. This
> requires some form of reification/VM support though.
>
>
Well, if I understand it correctly, value type arguments will be reified
necessarily because they end up specialising the type they parameterise.
So given a `List<Date>` instance you would get a `List${0=QDate;}`
class, from which it _must surely_ be possible to extract the `Date`
type argument at runtime via reflection. So while that information is
lost in an instance of `List<Object>` (erasure), it should not be erased
from instances of generic types whose type arguments are value types.
So yeah, that's an option, but it would _still_ require autoboxing of
any value type you put in or extract via reflection. And be less elegant
because it forces you to use reflection for every method invocation of
`Collection<val ?>`.
More information about the valhalla-dev
mailing list