I次のコードを持っている:のJava - 自作インタフェースのためのラムダを使用することはできません - ラムダ変換のターゲット・タイプがインターフェイスである必要があり
public interface Logic
{
boolean logicAccesscible();
}
public class LocationLogic implements Logic
{
@Override
public boolean logicAccesscible()
{
return true;
}
}
をしかし、私はLocationLogicオブジェクトを作成するためにラムダを使用しようとすると、それは単に動作しません。
作品をsnipetl.setLocationLogic(new LocationLogic()
{
@Override
public boolean logicAccesscible()
{
return false;
}
});
が、
l.setLocationLogic(() ->
{
return false;
});
は私に
「ラムダ変換のターゲット・タイプは、インターフェイスでなければなりません」のエラーを与え、そう、私が使用することを試みた:
l.setLocationLogic((LocationLogic)() -> {return false;});
:
ようにあなたがそれを使用することができ、そのようにセッター。パブリックvoid setLocationLogic(LocationLogic locationLogic) { this.locationLogic = locationLogic; } – Kishirada
メッセージは明確です。ラムダは機能的なインタフェース**のインスタンスです。 LocationLogicは**クラス**です。あなたのセッターは、LocationLogicではなく、Logicの引数を取るようにしてください。 –
だから私が変えなければならないのは...? – Kishirada