匿名内部类是继承了指定的类或实现了指定接口的类,我猜想它的class类型应该和该类(接口)相同,但实际发现不同。
public class M15 {
public static void main(String[] args) {
Runnable runnable = () -> {
};
System.out.println(runnable.getClass());
System.out.println(Runnable.class);
}
}
猜想这两个结果应该相同,但实际输出结果如下:
class com.cqf.java3.M15$$Lambda$1/1494279232
interface java.lang.Runnable
这是为什么呢?
在做Redis存缓存的时候,千万别使用这样的匿名内部类,如果把它存进Redis,在取出来的时候,会报一个JSON MappingException,正是上面的原因引起的。