请注意,如果将匿名类转换为未绑定的方法引用,则 Java 运行时可以在后续调用期间重用相同的方法引用对象。 另一方面,当使用匿名类时,每次都会创建单独的对象。 因此,在极少数情况下,应用快速修复可能会导致语义发生变化,例如,当匿名类实例用作 HashMap
键时。
示例:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println();
}
};
快速修复将此代码更改为压缩形式:Runnable r = System.out::println;
。
使用 在接口未使用 @FunctionalInterface 注解时报告 选项来为未使用 @FunctionalInterface 注解的接口启用此检查。
仅当项目或模块的语言级别为 8 或更高时才报告此检查。