首页 > 解决方案 > 是否有不带参数、不返回任何内容并允许检查异常的 JDK 功能接口?

问题描述

我正在 JDK 中寻找具有这样的方法签名的功能接口

@FunctionalInterface
public interface Executable {

    void execute() throws Exception;
}

但令人惊讶的是,我似乎找不到一个。

标签: javafunctional-interface

解决方案


我在 Java 中知道的唯一允许抛出已检查异常的功能接口是java.util.concurrent.Callable. 这是它的源代码:

@FunctionalInterface
public interface Callable<V> {

    V call() throws Exception;
}

它以不接受任何内容的方式进行限定,但是,它具有返回类型。您可以使用一个技巧 withVoid来指定不应该期望什么:

void method() throws Exception {
    throw new Exception("I am so dumb I always throw the exception");
}
Callable<Void> callable = () -> {
    method();
    return null;
};

推荐阅读