|
|
1
536
您需要执行以下操作之一。
|
|
|
2
243
你实际上可以扩展
考虑此接口(扩展
例如,如果你有一个列表:
如果你想食用它(例如
但是有了这个新接口,你可以用lambda表达式实例化它,编译器不会抱怨:
或者甚至只是把它写得更简洁!:
更新
看起来有一个非常好的实用程序库部分
Durian
打电话
Errors
这可以更灵活地用于解决这个问题。例如,在上面的实现中,我明确定义了错误处理策略(
示例用法:
|
|
|
3
70
我想
Durian's
要将榴莲纳入您的项目,您可以:
|
|
4
33
这不是Java 8特有的。您正试图编译相当于以下内容的东西:
|
|
|
5
13
免责声明:我还没有使用过Java 8,只读过它。
或者,如果你传递lambda的方法是你自己编写的,你可以定义一个新的函数接口,并将其用作参数类型,而不是
|
|
|
6
11
|
|
|
7
10
Sneaky throw idiom
允许绕过
它可以用作
这是一个简单而改进的版本 jib's answer .
这只是将lambda封装在一个
重新思考
它使
查找完整的代码和单元测试 here . |
|
|
8
7
但是,您可以创建自己的Functional Interface,如下所示。。
然后使用Lambdas或引用来实现它,如下所示。
|
|
|
9
7
您可以使用 unthrow wrapper
或
|
|
10
6
你可以。
扩展@margg的
|
|
|
11
5
我在lambda内部的Class.forName和Class.newInstance中遇到了这个问题,所以我只是这样做了:
在lambda内部,我没有调用Class.forName(“myClass”).newInstance(),而是调用了uncheckedNewInstanceForName(“myClass”) |
|
12
5
创建一个自定义返回类型,用于传播已检查的异常。这是创建一个新接口的替代方案,该新接口通过对功能接口方法的“抛出异常”进行轻微修改来镜像现有的功能接口。 定义CheckedValue供应商
检查值
使用方法
发生什么事?
创建了一个抛出已检查异常的单一功能接口(
这个
这种方法的问题。
消费者等
一些功能接口(
代替消费者的功能一种方法是使用函数而不是消费者,这在处理流时适用。
逐步升级
或者,您可以随时升级到
不要消费。只需避免使用功能接口,并使用一个好的老式for循环。 |
|
|
13
4
使用Function包装器的另一种解决方案是,如果一切顺利,返回结果包装器的实例,比如Success,或者返回失败的实例。 一些代码来澄清事情:
一个简单的用例:
|
|
14
4
这个问题也一直困扰着我;这就是我创造的原因 this project . 有了它,你可以做到:
JDK定义了总共39个接口,它们具有这样的特性
当它们中的每一个都扩展了它们的非投掷对应项时,你也可以直接在lambdas中使用它们:
默认行为是,当你抛出lambda抛出一个选中的异常时
其他功能也可用。 |
|
|
15
4
这里已经发布了很多很棒的回复。只是试图从不同的角度解决问题。这只是我的2美分,如果我哪里错了,请纠正我。 Functional Interface中的Throws子句不是一个好主意 我认为强制抛出IOException可能不是一个好主意,原因如下
如果我真的知道这个API抛出IOException,该怎么办
|
|
|
16
4
默认情况下,Java 8 Function 不允许抛出异常,正如多个答案中建议的那样,有很多方法可以实现它,一种方法是:
定义为:
并添加
|
|
|
17
4
我使用了一个重载的实用函数,名为
一些常见用法
配套公用设施
|
|
|
18
3
您可以使用 ET 为了这个。ET是一个用于异常转换/翻译的小型Java 8库。 ET看起来是这样的:
(免责声明:我是ET的作者) |
|
19
3
如果你不介意使用第三方库 cyclops-react ,我贡献的一个图书馆,你可以使用 FluentFunctions API编写
ofChecked接受一个jOO CheckedFunction,并将软化的引用返回给标准(未选中)JDK java.util.function。功能。 或者,您可以通过FluentFunctions api继续使用捕获的函数! 例如,要执行您的方法,最多重试5次,并记录您可以写入的状态
|
|
|
20
2
我所做的是允许用户在出现异常时给出他真正想要的值。 所以我有一个像这样的东西
然后可以这样调用:
|
|
21
1
使用
此外,它还包含最多16个参数的功能接口。此外,它还提供了用于不同场景的Tuple类。
特别是在库查找中
|
|
|
22
1
如果你有lombok,你可以用@SneakyThrows注释你的方法
|
|
|
23
0
所提供的几个解决方案使用E的通用参数来传递抛出的异常类型。 更进一步,而不是传入异常类型,传入异常类型的Consumer,如。。。
您可以创建几个可重复使用的变体
|
|
|
24
0
我将做一些通用的事情:
用法:
|
|
|
25
0
我是一个小库的作者,这个库有一些通用的魔法,可以在任何地方抛出任何Java异常
不需要抓住它们,也不需要把它们包起来
用途:
|
|
|
26
0
对我来说,首选的解决方案是使用龙目岛。不管怎样,这是一个不错的图书馆。 而不是:
你会有
异常仍然被抛出,但您不需要用throws声明它。 |
|
27
-8
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |