gpt4 book ai didi

java - 未检查的 lambda 的 ThrowingSupplier

转载 作者:行者123 更新时间:2023-12-02 09:42:57 25 4
gpt4 key购买 nike

我如何使用未经检查的方法编写 ThrowingSupplier 来替换这部分代码?我真的不知道如何开始它应该是一个接口(interface)还是一个类。

        try {
// get connection with the database
connection = dataSource.getConnection();
} catch (Exception e) {
throw new UndeclaredThrowableException(e);
}

我想要得到的是类似的东西

Connection connection = ThrowingSupplier.unchecked(dataSource::getConnection).get();

有什么想法吗?它应该是什么样子?我不确定它应该是一个接口(interface)还是一个我尝试编写的类,但后来我无法创建未经检查的静态方法,并且我不会创建它的新实例。

最佳答案

如果我理解正确的话,这就是你想要的:

public class ThrowingSupplier {
public static <T> Supplier<T> unchecked(Callable<T> callable) {
return () -> {
try {
return callable.call();
}
catch (Exception e) {
throw new UndeclaredThrowableException(e);
}
};
}

// example usage:
public static void main(String[] args) {
DataSource dataSource = null;
Connection connection = ThrowingSupplier.unchecked(dataSource::getConnection).get();
}
}

关于java - 未检查的 lambda 的 ThrowingSupplier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56914821/

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