2016-07-06 10 views
-1

私は一度機能していたインターフェイスを持っています。今私はそれがより抽象メソッドを持っているので、私はそれらをインターフェイスに追加し、それらのメソッドをオーバーライドするすべての実装を変更したいと思います。私は私のプロジェクトでretrolambdaを使用します。 私はアプリを実行すると、私は次のエラーを取得する:エラー:互換性のないタイプ:DeviceCheckCallbackは機能インターフェイスではありません

Error:incompatible types: DeviceCheckCallback is not a functional interface multiple non-overriding abstract methods found in interface DeviceCheckCallback

は、なぜ私はこれを見ていますか?私はこのインターフェイスがもう機能しないようにしたいですか?

+1

このインターフェイスにはまだ '@ FunctionalInterface'アノテーションがありますか、そのインターフェイスタイプが期待されるラムダ式があります。または、すべてのクラスを再コンパイルしませんでした。しかし、実行時に*を取得するのは奇妙です。 – Holger

答えて

3

ラムダを提供しようとしているインターフェイスには、複数の方法があります。ラムダは単一のメソッド(「ファンクショナルインターフェイス」と呼ばれる)を持つインターフェイスに対してのみ使用できます

+1

私はそのインタフェースのすべての用途を見つけ、新しく定義されたメソッドをオーバーライドするように実装を変更しました。私はラムダをそのインタフェースに提供しようとしません。私は '@ FunctionalInterface'というアノテーションを持っていません。 – Booyaches

+1

おそらくあなたはJarや、古い変更されていないインターフェースを期待しているものを含んでいます。 Holgerが提案したように、そのインターフェースのすべてのユーザーを変更しなかったか、コードを再コンパイルしなかったようです。 – john16384

関連する問題