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