匿名クラスがアンバウンドのメソッド参照に変換されると、Java ランタイムが後続の呼び出しで同じメソッド参照のオブジェクトを再利用することができます。 一方、匿名クラスが使用される際には毎回別のオブジェクトが作成されます。 そのため、匿名クラスインスタンスが HashMap キーとして使用されているようなまれなケースでは、このクイックフィックスを適用した際にセマンティクスが変更される可能性があります。
例:
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println();
}
};
クイックフィックス適用後:
Runnable r = System.out::println;
@FunctionalInterface アノテーションが付いていないインターフェースに対してこのインスペクションを有効にするには、「インターフェースに @FunctionalInterface アノテーションがない場合に報告する」オプションを使用します。