gpt4 book ai didi

java - 如何在没有 lambda 表达式的情况下使用 JSONObject.computeIfAbsent

转载 作者:行者123 更新时间:2023-12-01 10:05:58 25 4
gpt4 key购买 nike

大家好,我想知道如何在不使用 lambda 表达式的情况下使用 JSONObject.computeIfAbsent 。实际上,这是我的代码

list.computeIfAbsent(id, k -> {
try {
throw new UnknowClientException("Unkown client : Unable to find client with id" + id);
} catch (UnknowClientException e) {

}
});

我希望函数抛出我的自定义异常。我假设我需要将 thows 添加到函数的签名中,但我不知道如何使用 lambda 表达式来做到这一点,这就是我想使用“函数”的原因

最佳答案

将 lambda 表达式转换为普通类是没有意义的,因为这不会更改允许的异常集。它是已实现的接口(interface),其声明决定了允许的异常。接口(interface)的实现者无法将已检查的异常添加到接口(interface)已声明的异常中未涵盖的 throws 子句中。

如果您正在谈论 computeIfAbsent method inherited from the Map interface ,实现的方法是Function.apply ,它不允许任何受检查的异常。

作为替代方案,您可以使用

result = Optional.ofNullable(list.get(id)).orElseThrow(() -> 
new UnknowClientException("Unkown client : Unable to find client with id" + id));

通用方法Optional.orElseThrow声明抛出所提供的 Supplier 声明要创建的内容,因此如果 UnknowClientException 是一个已检查的异常,调用者将必须捕获或声明它,这似乎是您的初衷.

关于java - 如何在没有 lambda 表达式的情况下使用 JSONObject.computeIfAbsent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36476338/

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