【发布时间】:2017-12-29 16:44:47
【问题描述】:
我有以下代码:
public interface Logic
{
boolean logicAccesscible();
}
public class LocationLogic implements Logic
{
@Override
public boolean logicAccesscible()
{
return true;
}
}
但是当我尝试使用 lambda 创建 LocationLogic 对象时,它根本不起作用。
l.setLocationLogic(new LocationLogic()
{
@Override
public boolean logicAccesscible()
{
return false;
}
});
该片段有效,但是
l.setLocationLogic(() ->
{
return false;
});
给我“lambda转换的目标类型必须是接口”的错误
是的,我尝试过使用:
l.setLocationLogic((LocationLogic) () -> {return false;});
【问题讨论】:
-
这只是一个简单的二传手。公共无效 setLocationLogic(LocationLogic locationLogic) { this.locationLogic = locationLogic; }
-
信息很清楚。 lambda 是函数式接口 的一个实例。 LocationLogic 是一个类。让你的 setter 将 Logic 作为参数,而不是 LocationLogic。
-
所以我要改变的是...?
-
让你的 setter 将逻辑作为参数,而不是 LocationLogic。
-
感谢工作!
标签: java intellij-idea lambda