See you at JVMLS

Peter Levart peter.levart at gmail.com
Wed Aug 19 14:55:18 UTC 2015



On 08/18/2015 11:59 PM, Rémi Forax wrote:
> It can not work because if the method in B is package visible it should in Foo$any or not depending if the code that use Foo$any is in the same package as B or not.

That's a problem. There would have to be a Bar$any interface with 
methods from Bar (and Foo$any extends Bar$any) even though Bar is not 
using "any T" generics in it's declaration...

Also, if Foo<any>.class is an interface, one could create a:

      Foo<any> proxy = Proxy.newProxyInstance(..., new Class<?>[] { 
Foo<any>.class }, ...);

and try to assign:

     Bar bar = proxy;

So it seems that Bar.class.isAssignableFrom(Foo<any>.class) would have 
to return false...

Peter

>
> regards,
> Rémi
>
> Le 18 août 2015 23:53:21 CEST, Brian Goetz <brian.goetz at oracle.com> a écrit :
>> Yes, that has to work, though it doesn't currently.  On the list...
>>
>> On 8/18/2015 5:49 PM, Palo Marton wrote:
>>> Yes, that's a nice sidestep ;-)
>>> My question was meant in a general way, not only about results of
>>> instanceof/isAssignableFrom. What about methods of Bar? Will you
>>> recreate them in Foo$any? What about eg call to
>>> f.barMethod()?
>>> On ut, 18. aug 2015 at 23:39 Brian Goetz <brian.goetz at oracle.com
>>> <mailto:brian.goetz at oracle.com>> wrote:
>>>
>>>      I'll sidestep your clever question by pointing out that the left
>> operand
>>>      of an instanceof check is an expression, not a type.
>>>
>>>      If you have:
>>>
>>>            Foo<any> f = ...
>>>
>>>            if (f instanceof Bar) { ... }
>>>
>>>      this works just fine, because all instantiations of Foo<T> are
>>>      represented by classes whose supertype is Bar.  The harder
>> question is
>>>      the reflective one (Class.isAssignableFrom.)  But reflection is
>> still a
>>>      work in progress (as is the whole thing, of course.)
>>>
>>>      On 8/18/2015 5:30 PM, Palo Marton wrote:
>>>       > Thanks. I have just watched your talk on Valhalla. Just one
>> curious
>>>       > question on xxx$any interfaces: How do you handle this?
>>>       >
>>>       > class Foo<any T> extends Bar { }
>>>       >
>>>       > Foo$any instanceof Bar?
>>>       > On ut, 18. aug 2015 at 19:02 Brian Goetz
>> <brian.goetz at oracle.com
>>>      <mailto:brian.goetz at oracle.com>
>>>       > <mailto:brian.goetz at oracle.com
>> <mailto:brian.goetz at oracle.com>>>
>>>      wrote:
>>>       >
>>>       >     JVMLS talks up at:
>>>       > https://www.youtube.com/user/java
>>>       >
>>>       >
>>>       >     On 8/8/2015 12:05 PM, Brian Goetz wrote:
>>>       >      > I'll be doing a talk on the path from Model 1 to Model
>> 2
>>>      (and a
>>>       >     glimpse
>>>       >      > of Model 3) at JVMLS next week.  Hope to see some of
>> you
>>>      there.
>>>       >     Videos
>>>       >      > should go up on the Java YouTube channel fairly quickly
>>>      after the
>>>       >      > conference.
>>>       >      >
>>>       >      > In the meantime ... I'll just note that we've had 50+
>>>      messages on the
>>>       >      > various "Model 2" threads and none of them started with
>> "I
>>>      tried
>>>       >     it out
>>>       >      > and..."
>>>       >      >
>>>       >      > So a reminder ... the most valuable input the community
>>>      can give
>>>       >     in this
>>>       >      > process is to provide *actual experience reports*.
>> That's
>>>      the main
>>>       >      > reason we make the significant investment in making the
>>>      code and
>>>       >     design
>>>       >      > sketches available early -- so that people can actually
>> try it
>>>       >     out, and
>>>       >      > help us see the holes that we might have missed.
>>>       >      >
>>>       >      >
>>>       >
>>>       > --
>>>       > Pavol Marton
>>>
>>> --
>>> Pavol Marton



More information about the valhalla-dev mailing list