http://deprecated-apache-flink-user-mailing-list-archive.369.s1.nabble.com/Java-8-and-type-erasure-tp2411p2432.html
idea completely.
> Yep, Timo wrote the patch, both for OpenJDK and JDT - the JDT one was
> accepted in the end.
>
>
> On Tue, Aug 18, 2015 at 2:09 PM, Robert Metzger <
[hidden email]> wrote:
>>
>> Exactly, Timo opened the thread.
>>
>> On Tue, Aug 18, 2015 at 2:04 PM, Kristoffer Sjögren <
[hidden email]>
>> wrote:
>>>
>>> Yeah, I think I found the thread already... by Timo Walther?
>>>
>>> On Tue, Aug 18, 2015 at 2:01 PM, Stephan Ewen <
[hidden email]> wrote:
>>> > Would have been great. I had high hopes when I saw the trick with the
>>> > "constant pool", but this is only to make what Flink does already
>>> > applicable
>>> > to non-serializable lambdas.
>>> >
>>> > If you want to help us with this, I'll ping you for some support on the
>>> > OpenJDK mailing list ;-)
>>> >
>>> > On Tue, Aug 18, 2015 at 1:59 PM, Kristoffer Sjögren <
[hidden email]>
>>> > wrote:
>>> >>
>>> >> I suspected that you already had looked into this, but it was worth a
>>> >> try. It would make everything so much easier.
>>> >>
>>> >> Thanks for the explanation :-)
>>> >>
>>> >>
>>> >> On Tue, Aug 18, 2015 at 1:50 PM, Stephan Ewen <
[hidden email]>
>>> >> wrote:
>>> >> > Hi Kristoffer!
>>> >> >
>>> >> > I looked through the code as well. In fact, Flink currently uses the
>>> >> > trick
>>> >> > mentioned for Serializable Lambdas in the gist you sent me.
>>> >> >
>>> >> > This works well for lambdas that return simple types (primitives or
>>> >> > classes
>>> >> > without generics). The information for the generic parametrization
>>> >> > is
>>> >> > unfortunately really erased, it is in no signature or anything.
>>> >> >
>>> >> > Java has the concept of "generic method signatures", which means
>>> >> > that a
>>> >> > method gets a signature string that includes the generic types.
>>> >> > These
>>> >> > signatures are generated for regular functions, but OpenJDK and
>>> >> > OracleJDK do
>>> >> > not generate them for synthetic methods (like lambdas).
>>> >> >
>>> >> > We tried to submit a patch to OpenJDK to add these generic
>>> >> > signatures to
>>> >> > lambda methods, but they did not like the fact that we try to figure
>>> >> > out
>>> >> > the
>>> >> > generic types of lambdas. I hope they change their minds at some
>>> >> > point...
>>> >> >
>>> >> > Stephan
>>> >> >
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Tue, Aug 18, 2015 at 11:46 AM, Aljoscha Krettek
>>> >> > <
[hidden email]>
>>> >> > wrote:
>>> >> >>
>>> >> >> Unfortunately, this also doesn't work for the same reasons. The
>>> >> >> generic
>>> >> >> types of generic parameters of a lambda are not stored anywhere.
>>> >> >> Stephan
>>> >> >> mentioned to me that the only possibility right now would be to
>>> >> >> look at
>>> >> >> the
>>> >> >> code using something like ASM to find a cast in the code to the
>>> >> >> concrete
>>> >> >> type of the generic parameter.
>>> >> >>
>>> >> >> On Tue, 18 Aug 2015 at 11:35 Kristoffer Sjögren <
[hidden email]>
>>> >> >> wrote:
>>> >> >>>
>>> >> >>> How about
https://github.com/jhalterman/typetools?
>>> >> >>>
>>> >> >>> On Tue, Aug 18, 2015 at 11:16 AM, Aljoscha Krettek
>>> >> >>> <
[hidden email]>
>>> >> >>> wrote:
>>> >> >>> > Hi Kristoffer,
>>> >> >>> > I'm afraid not, but maybe Timo has some further information. In
>>> >> >>> > this
>>> >> >>> > extended example we can see the problem:
>>> >> >>> >
https://gist.github.com/aljoscha/84cc363d13cf1dfe9364. The
>>> >> >>> > output
>>> >> >>> > is:
>>> >> >>> >
>>> >> >>> > Type is: class
>>> >> >>> > org.apache.flink.examples.java8.wordcount.TypeTest$Thing
>>> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing
>>> >> >>> > Type is: class
>>> >> >>> > org.apache.flink.examples.java8.wordcount.TypeTest$Thing
>>> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing
>>> >> >>> > Type is :
>>> >> >>> >
>>> >> >>> >
>>> >> >>> >
>>> >> >>> > org.apache.flink.examples.java8.wordcount.TypeTest.org.apache.flink.examples.java8.wordcount.TypeTest$Thing<java.lang.String>
>>> >> >>> > class org.apache.flink.examples.java8.wordcount.TypeTest$Thing
>>> >> >>> >
>>> >> >>> > So with the two lambda calls it does not correctly determine the
>>> >> >>> > generic
>>> >> >>> > parameter of Thing while it works with the anonymous class.
>>> >> >>> >
>>> >> >>> > I was exited when I saw the example because we've been trying
>>> >> >>> > for so
>>> >> >>> > long to
>>> >> >>> > get this to work. Maybe we have to wait for java 19 to get this
>>> >> >>> > to
>>> >> >>> > work. ;-)
>>> >> >>> >
>>> >> >>> > Thanks a lot for helping, though. :D
>>> >> >>> > Aljoscha
>>> >> >>> >
>>> >> >>> > On Tue, 18 Aug 2015 at 11:01 Kristoffer Sjögren
>>> >> >>> > <
[hidden email]>
>>> >> >>> > wrote:
>>> >> >>> >>
>>> >> >>> >> Hi
>>> >> >>> >>
>>> >> >>> >> Potential fix for writing flink jobs using lamdas without
>>> >> >>> >> Eclipse
>>> >> >>> >> JDT?
>>> >> >>> >>
>>> >> >>> >>
https://gist.github.com/aslakhellesoy/3678beba60c109eacbe5>>> >> >>> >>
>>> >> >>> >> Cheers,
>>> >> >>> >> -Kristoffer
>>> >> >
>>> >> >
>>> >
>>> >
>>
>>
>