由于期待迁移到Java 8,我试图以有助于使用lambdas的方式编写代码。
我需要一个带有单个方法的函数接口,该方法接受某种类型T
的一个参数并返回void
。这是java.util.function.Consumer
的accept()
方法的签名,但当然我还不能使用它。
我可以使用标准Java 7(最好是Java 6)API中的另一个接口吗?我知道我可以创造自己的,但尤其是。在将此代码移植到Java 8之前,如果我可以使用标准Java 6/7 API中已经熟悉的标准接口,则可读性更好。
到目前为止,我发现的最接近的是com.google.common.base.Function<T,Void>
,但是(a)它不是标准Java API的一部分,而且(b)它的文档说“函数的实例通常被认为是引用透明的 - - 没有副作用“,这与我的预期用途相反(使用Void
返回类型)。
答案 0 :(得分:10)
您可以创建自己的界面:
public interface Invokable <T>{
public void invoke(T param);
}
或者,如建议的那样,您可以使用与Java 8 Consumer
相同的界面。源代码包含在Java 8 JDK Early Access下载中,此处删除了所有注释和注释:
public interface Consumer<T>{
void accept(T t)
default Consumer<T> andThen(Consumer<? super T> after)
}
答案 1 :(得分:2)
javax.websocket.MessageHandler.Whole
应该是您正在寻找的。 p>