Lambda proxy class doesn't carry generics information
Remi Forax
forax at univ-mlv.fr
Sat Oct 5 11:49:48 UTC 2013
David Gageot [1] talk to me about this issue after my presentation at
ParisJUG and
I totally forgot to report it.
He said that he is using a framework that uses the generic information
inserted by javac
(and available by reflection) so he can not retrofit its code that uses
inner classes to
use lambdas because the generated lambda proxy doesn't carry this
information.
Here is a small test to see the issue:
public static void main(String[] args) {
Comparator<String> c = new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
};
Comparator<String> c2 = (s1, s2) -> s1.compareTo(s2);
System.out.println(Arrays.toString(c.getClass().getGenericInterfaces())); //
[java.util.Comparator<java.lang.String>]
System.out.println(Arrays.toString(c2.getClass().getGenericInterfaces()));
// [interface java.util.Comparator]
}
I said to him that it was not a bug, but it's less clear to me now :(
cheers,
Rémi
More information about the core-libs-dev
mailing list