2017-05-15 13 views
1

メソッドリファレンス(object :: method)の配列リストがあります。ここでは、ユーザーがボタンをクリックしたときにいくつかのメソッドを挿入します。問題は、ある時点でいくつかの特定のメソッド参照を削除する必要もあることです。Android/Java - リストからメソッド参照を削除する

私がlist.remove(object :: method)を使用した場合、lambda object ::メソッドは使用するたびに別のIDを持つため、このメソッドは削除されません。私は各オブジェクト::メソッドをリムーバブルにしたいので、それぞれのオブジェクトメソッドペアに対して同じラムダIDを取得する方法が必要です。

これを実行する方法はありますか、または追加したすべてのIDを手動で追跡して削除する必要がありますか?

答えて

0

この回答https://stackoverflow.com/a/29082592/2657100

からメソッドリファレンスまたはラムダ式のターゲット・タイプは、機能インタフェースであるべきです。これに基づいて、ランタイムは、指定された機能インタフェースの実装を提供するクラスのインスタンスを作成します。

同じ方法の参照を2回追加してみてください。 2つの異なるオブジェクトがあることがわかります。equalsを呼び出すと、おそらくfalseが返されます。

IDや反射Methodインスタンスなどの補助的な構造を持たない機能的なインターフェイスのインスタンスを管理するのは難しいでしょう。

関連する問題