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