本文关键词:Java 8, 函数式接口,lambda 。
介绍
全路径: java.util.concurrent.Callable 。
该接口在 Java 8 之前就存在,从 Java 8 开始加了注解 @FunctionalInterface
。一般用于多线程开发的场景中。
非多线程开发,考虑使用 java.util.function.Supplier ,如果认为语义不合适,考虑自定义。
源码:
@FunctionalInterface
public interface Callable<V> {
/**
* Computes a result, or throws an exception if unable to do so.
*
* @return computed result
* @throws Exception if unable to compute a result
*/
V call() throws Exception;
}
注意,这里的 call 方法声明了会抛出异常。使用时,外层函数要catch或者也跟着声明抛出异常。
示例
代码示例:
import java.util.concurrent.Callable;
public class Main {
public static void main(String[] args) throws Exception {
Callable<Long> callable = () -> {
return 100L;
};
System.out.println(callable.call());
}
}