Hi,
forgive me if this was discussed already, but I found that the implementation
of hidden classes causes a change in behavior for Class.getCanonicalName().
When using the following example code:
interface Function {
void doSomething();
}
public class Example {
public static void main(String[] args) {
Class<? extends Function> lambdaClass = ((Function) () ->
{}).getClass();
String canonicalName = lambdaClass.getCanonicalName();
System.out.println(canonicalName);
String name = lambdaClass.getName();
System.out.println(name);
}
}
I get the following results:
JDK 14
com.example.demo.Example$$Lambda$14/0x0000000800b66840
com.example.demo.Example$$Lambda$14/0x0000000800b66840
JDK 15
null
com.example.demo.Example$$Lambda$14/0x0000000800b89448
As far as I can tell from the code Lambdas are considered hidden classes now.
Is that correct?
I guess Class.getName() should be used instead?
Cheers,
Christoph