实现匿名函数的匿名接口的java语法
我有一个界面看起来像实现匿名函数的匿名接口的java语法,java,lambda,interface,Java,Lambda,Interface,我有一个界面看起来像 public interface ListAbstractor { List<String> getList(); void addTo(String s); } 我想实现它,比如: ListAbstractor la = new ListAbstractor() { getList = ()-> settings.getZooKe
public interface ListAbstractor
{
List<String> getList();
void addTo(String s);
}
我想实现它,比如:
ListAbstractor la =
new ListAbstractor()
{
getList = ()-> settings.getZooKeeperList();
addTo = (s)-> settings.addToZookeeperList(s);
};
但是eclipse不喜欢这样。那么,最简单的方法是什么呢?我最后做的是将接口分成两个接口。这实际上比我想做的代码少,所以要赢
myTestFunction(()-> settings.getZooKeeperList(),
(s)-> settings.addToZookeeperList(s));
我最后做的是将接口分成两个接口。这实际上比我想做的代码少,所以要赢
myTestFunction(()-> settings.getZooKeeperList(),
(s)-> settings.addToZookeeperList(s));
常见的解决方案是在接口中创建一个特殊的静态方法来构造实例:
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
public interface ListAbstractor {
List<String> getList();
void addTo(String s);
public static ListAbstractor of(Supplier<List<String>> listSupplier,
Consumer<String> adder) {
return new ListAbstractor() {
@Override
public List<String> getList() {
return listSupplier.get();
}
@Override
public void addTo(String s) {
adder.accept(s);
}
};
}
}
常见的解决方案是在接口中创建一个特殊的静态方法来构造实例:
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
public interface ListAbstractor {
List<String> getList();
void addTo(String s);
public static ListAbstractor of(Supplier<List<String>> listSupplier,
Consumer<String> adder) {
return new ListAbstractor() {
@Override
public List<String> getList() {
return listSupplier.get();
}
@Override
public void addTo(String s) {
adder.accept(s);
}
};
}
}
没有。Lambda语法仅适用于功能接口。使用匿名类声明语法(或定义实现接口的命名类型)。您所说的“函数接口”是什么意思?只有一个函数的接口?那么“是的,只有一个函数的接口”就没有了。Lambda语法仅适用于功能接口。使用匿名类声明语法(或定义实现接口的命名类型)。您所说的“函数接口”是什么意思?只有一个功能的接口?所以“是的,只有一个功能的接口”是不知道的。这个问题很清楚,也很有趣。我不知道。这个问题很清楚,也很有趣。我选择了你的答案,因为它看起来是用java实现的“正确”方法。我仍然希望有一种更轻松、更匿名的方法来声明函数,但我想这是java为您准备的。我选择了您的方法作为答案,因为它看起来是用java实现的“正确”方法。我仍然希望有一种更轻松、更匿名的方法来声明函数,但我想这是java为您准备的。