Java 8:函数式接口 Callable:无参数, 有返回值


#Java 8#


本文关键词: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());
    }

}

( 本文完 )