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 <se...@apache.org> 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 <aljos...@apache.org>
> 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 <sto...@gmail.com> wrote:
>>>
>>> How about https://github.com/jhalterman/typetools?
>>>
>>> On Tue, Aug 18, 2015 at 11:16 AM, Aljoscha Krettek <aljos...@apache.org>
>>> 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 <sto...@gmail.com>
>>> > wrote:
>>> >>
>>> >> Hi
>>> >>
>>> >> Potential fix for writing flink jobs using lamdas without Eclipse JDT?
>>> >>
>>> >> https://gist.github.com/aslakhellesoy/3678beba60c109eacbe5
>>> >>
>>> >> Cheers,
>>> >> -Kristoffer
>
>

Reply via email to