0
나는 다음과 같은 코드가 있습니다자바 - 자기 만든 인터페이스에 대한 람다를 사용할 수 없습니다 - 람다 변환의 대상 유형은 인터페이스해야
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;});
그것은 단지 간단합니다 : 당신이 원하는 사용할 수
그 방법을 세터. public void setLocationLogic (LocationLogic locationLogic) { this.locationLogic = locationLogic; } – Kishirada
메시지가 분명합니다. 람다는 기능 ** 인터페이스 **의 인스턴스입니다. LocationLogic은 ** 클래스 **입니다. 당신의 세터가 ArgLogic이 아닌 Logic 인수를 취하도록하십시오. –
그래서 내가 바꾸어야 할 것은 ...? – Kishirada