msu*_*ung 19 java compatibility java-7 java-8
java 8的功能接口是否可用(即jar),所以我可以在Java 7项目中使用它们?这样我以后可以更容易地将代码移植到惯用的java 8.如果不是,技术上是否可行,或者他们是否使用默认方法等新功能?
是的,我的意思是java.util.function中的接口.因为添加带有java前缀的包似乎是不允许从其他地方导入它们不是一个选项.
ass*_*ias 18
功能接口只是一个只有一个非默认的非静态方法的接口.满足该定义的所有接口都可以通过Java 8中的lambda实现.
例如,Runnable是一个功能接口,在Java 8中你可以写:Runnable r = () -> doSomething();.
许多被Java 8所带来的功能接口都在该java.util.function包.最常见的是:
Consumer<T> 有一个 void accept(T t)Supplier<T> 有一个 T get()Function<T, R> 有一个 R apply(T t)Predicate<T> 作为一个 boolean test(T t)在这个阶段你可以做的是在任何有意义的地方使用单一方法接口,如果可能的话,使用类似的签名.迁移到Java 8时,您将能够通过以下方式轻松地重构IDE:
someMethod(new MyConsumer<T>() { public void accept(T t) { use(t); } });
Run Code Online (Sandbox Code Playgroud)
成
someMethod(t -> use(t));
Run Code Online (Sandbox Code Playgroud)
然后改变的签名someMethod(MyConsumer<T> mc)为someMethod(Consumer<T> c),摆脱你的MyConsumer界面和你做.
以下是java 8主要功能接口的签名,作为assylias答案的补充
public interface Consumer<T> {
void accept(T t);
}
public interface Supplier<T> {
T get();
}
public interface Function<T, R> {
R apply(T t);
}
public interface Predicate<T> {
boolean test(T t);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14316 次 |
| 最近记录: |