gpt4 book ai didi

java - 抛出检查异常的 block 是否有标准的 Java 8 FunctionalInterface?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:40 24 4
gpt4 key购买 nike

Callable 会抛出异常,而 Runnable 不会。

有没有标准的样子

@FunctionalInterface
public interface TypedBlock<E extends Exception> {
public void run() throws E;
}

最佳答案

不,据我所知没有内置功能。但是您可以为此使用外部库(以及许多其他很酷的功能)。

您可以使用 JOOL ,您可以在其中使用 Unchecked为此上课。

该页面中的示例使用 IOException 演示了这一点

Arrays.stream(dir.listFiles()).forEach(
Unchecked.consumer(file -> { System.out.println(file.getCanonicalPath()); })
);

另一种(在我看来更好的)方法是使用功能设计库,如 Functionaljava .

一个好的方法是将您的任务包装在 Validation 中,以便事后决定结果是否成功。这可能看起来像这样:

TypedBlock<IOException> foo = ...;

// do your work
final Validation<IOException, Unit> validation = Try.f(() -> {
foo.run();
return Unit.unit(); // Unit equals nothing in functional languages
})._1();

// check if we got a failure
if (validation.isFail()) {
System.err.println("Got err " + validation.fail());
}

// check for success
if (validation.isSuccess()) {
System.out.println("All was good :-)");
}

// this will just print out a message if we got no error
validation.forEach(unit -> System.out.println("All was good"));

关于java - 抛出检查异常的 block 是否有标准的 Java 8 FunctionalInterface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27050314/

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