我对lambda表达有意见。我的代码:
public static void main(String[] args) {
Function<String, String> lambda = path -> {
String result = null;
try {
BufferedReader br = new BufferedReader(new FileReader(path));
String line;
while ((line = br.readLine()) != null) {
result = result + line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
};
}
public static void main(String[] args) throws IOException {
Function<String, String> lambda = path -> {
String result = null;
BufferedReader br = new BufferedReader(new FileReader(path));
String line;
while ((line = br.readLine()) != null) {
result = result + line;
}
return result;
};
}
有可能吗?我只能使用java.util.function。我尝试从“lambda”中删除try catch,而我“main”方法应该正在捕获异常。
内置的function
类不允许抛出未经检查的异常,您可以从apply()
方法的签名中看到这一点。
但是,您可以轻松地定义允许抛出异常的@functionalinterface
,例如:
@FunctionalInterface
public interface CheckedFunction<U,V> {
public V apply(U u) throws Exception;
}
并将lambda
变量改为checkedfunction
。
如果出于任何原因必须使用内置的函数
,则另一种方法是将所有检查的异常转换为runtimeexception
,例如:
Function<Foo,Bar> f = foo -> {
try {
return foo.methodThatCanThrow();
} catch (RuntimeException e) {
throw e;
} catch (Exception e) {
throw new RuntimeException(e);
}
};
这将允许您的代码进行编译,但肯定不是一般推荐的最佳实践。
我有metohod myservice#create,它抛出CustomException。我在可选#map中调用此方法,如下所示: 当我用引起异常的参数调用这个方法时,就会捕获CustomException,但结果是操作成功,状态为200。如何在lambda中处理此异常并返回异常消息?
既然我有一个带有两个方法的,那么我如何用一个具体的类实现它呢?如何为这两种方法编写Lambda表达式?
问题内容: 我如何写一个等于的lambda表达式: 不允许以下内容: 问题答案: 皮肤化Python的方法不止一种: Lambda接受语句。既然是一条语句,您可以编写一个通用的提升器: 但是,如果您的目标是避免使用,则显然不能削减它。但是,它确实允许您有条件地引发异常,例如: 另外,您可以在不定义命名函数的情况下引发异常。您所需要的只是强健的腹部(给定的代码是2.x): 和python3 强健胃部
让我们考虑一个类,它只包含一个属性。我创建了6个父类对象,属性值为。 在这两种情况下,我都得到一个。 这个怎么处理?
主要内容:作为参数使用Lambda表达式,访问变量,方法引用在《 Java Lambda表达式》和《 Java Lambda表达式的3种简写方式》一节中我们了解了 Java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。 作为参数使用Lambda表达式 Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。示例代码如下:
我正在使用Java8中引入的Stream API,为列表中的每个字符串运行一个方法。 如您所见,方法签名状态为抛出所有IOExceptions,流中的writeToString方法可能抛出IOException。但是,Java编译器给了我一个错误,指出流线上有一个未处理的IOException。 为什么流中的异常不会像方法中的其他异常一样被抛出?有没有什么方法可以在不在forEach lambda