为了准备迁移到Java 8,我试图以一种有利于使用lambdas的方式编写我的代码。
我需要一个带有单个方法的函数接口,该方法接受T
类型的一个参数并返回void
。这是java.util.function.Consumer
的accept()
方法的签名,但我当然还不能使用。
在标准的Java 7(最好是Java 6) API中,是否有另一个我可以使用的接口?我知道我可以创造自己的,但尤其是。在将这段代码移植到Java 8之前,如果我能够使用标准Java6/7 API中已经熟悉的标准接口,那么可读性会更好。
到目前为止,我发现的最接近的东西是com.google.common.base.Function
,但是(a)它不是标准Java的一部分,(b)它的文档说“函数的实例一般都是引用透明的--没有副作用”,这与我的预期用法(使用Void
返回类型)是相反的。
发布于 2014-03-03 21:39:44
您可以创建自己的界面:
public interface Invokable <T>{
public void invoke(T param);
}
或者,正如建议的那样,您可以使用与Java8 Consumer
相同的接口。源代码包含在Java 8 JDK早期访问下载中,这里删除了所有注释和注释:
public interface Consumer<T>{
void accept(T t)
default Consumer<T> andThen(Consumer<? super T> after)
}
发布于 2014-03-04 09:03:42
哈,找到一个!查看JavaEE 7 API:接口javax.websocket.MessageHandler.Whole
应该是您要寻找的。
https://stackoverflow.com/questions/22157957
复制相似问题