gpt4 book ai didi

java - Java 7 中 Java 8 的功能接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 22:45:18 25 4
gpt4 key购买 nike

Java 8 的功能接口(interface)是否在某处可用(即 jar)以便我可以在 Java 7 项目中使用它们?这样我以后可以更轻松地将代码移植到惯用的 Java 8。如果不是,这在技术上是否可行,或者他们是否使用了默认方法等新功能?

是的,我指的是 java.util.function 中的接口(interface)。因为添加带有 java 前缀的包似乎是不允许的,所以从其他地方导入它们不是一种选择。

最佳答案

函数式接口(interface)只是一个只有一个非默认、非静态方法的接口(interface)。所有满足该定义的接口(interface)都可以通过 Java 8 中的 lambda 实现。

例如,Runnable是一个功能接口(interface),在 Java 8 中你可以这样写:Runnable r = () -> doSomething(); .

很多Java 8带来的函数式接口(interface)都在the java.util.function package中.最常见的是:

  • Consumer<T>它有一个 void accept(T t)
  • Supplier<T>它有一个 T get()
  • Function<T, R>它有一个 R apply(T t)
  • Predicate<T>作为 boolean test(T t)

在这个阶段你可以做的是在任何有意义的地方使用单一方法接口(interface),如果可能的话使用相似的签名。当您迁移到 Java 8 时,您将能够通过您的 IDE 轻松重构:

someMethod(new MyConsumer<T>() { public void accept(T t) { use(t); } });

进入

someMethod(t -> use(t));

然后更改someMethod(MyConsumer<T> mc)的签名进入someMethod(Consumer<T> c) ,干掉你MyConsumer界面,你就完成了。

关于java - Java 7 中 Java 8 的功能接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22905562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com