![](/img/trans.png)
[英]How can I suppress anonymous new runnable() can be replaced with lambda
[英]Runnable Throwing Exception Can be Replaced By Lambda?
Runnable runnable = new Runnable() {
@Override
public void run() {
throw new RuntimeException("You cannot Pass!");
}
};
可以说我像上面提到的那样运行。 IntelliJ报告说,从Java 8开始,所有匿名类都可以由lambda代替。
有人可以用正确的语法帮助我吗?
需要以runnable作为参数调用的函数:
public void intercept(Runnable runnable) { ... }
PS:关于为什么有人需要像这样的可运行食品不是这里的问题,谢谢
Lambda可用于定义Runnable
接口,因此不需要太多更改:
Runnable runnable = () -> {
throw new RuntimeException("You cannot Pass!");
};
()
是不声明任何参数的语法—将此与例如用于定义BiFunction<String, Integer, String>
的两个参数的列表进行比较:
BiFunction<String, Integer, String> fooBarConcatenator = (foo, bar) -> foo + bar;
Runnable
的方法不带参数,因此代码如下:
Runnable r = () -> { throw new RuntimeException(); };
但是,请注意,您将无法引发已检查的异常,因为Runnable的run()
没有要抛出的已定义的已检查的异常。 为此,您将必须定义自己的功能接口并定义一个包装Runnable的lambda。 检查这个更多。
另外,许多现代IDE(尤其是Intellij)为您提供了自动替换替代品的提示。 因此,请在屏幕的左侧检查一个小的警告图标,单击该图标将自动用相应的lambda表达式替换您的代码。 或者,在特定行中单击Alt + Enter (对于Mac,为Cmd + Enter )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.