是否有一个Java-8之前的功能接口,它可以替代java.util.function.Consumer <t>?</t>

时间:2014-03-03 21:35:32

标签: java interface lambda java-8

由于期待迁移到Java 8,我试图以有助于使用lambdas的方式编写代码。

我需要一个带有单个方法的函数接口,该方法接受某种类型T的一个参数并返回void。这是java.util.function.Consumeraccept()方法的签名,但当然我还不能使用它。

我可以使用标准Java 7(最好是Java 6)API中的另一个接口吗?我知道我可以创造自己的,但尤其是。在将此代码移植到Java 8之前,如果我可以使用标准Java 6/7 API中已经熟悉的标准接口,则可读性更好。

到目前为止,我发现的最接近的是com.google.common.base.Function<T,Void>,但是(a)它不是标准Java API的一部分,而且(b)它的文档说“函数的实例通常被认为是引用透明的 - - 没有副作用“,这与我的预期用途相反(使用Void返回类型)。

2 个答案:

答案 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)

哈,发现一个!查看JavaEE 7 API:界面javax.websocket.MessageHandler.Whole应该是您正在寻找的。