我试图学习在Java8中使用lambda表达式的方法引用,但遇到了一些我无法完全理解的东西。
public class Test {
public static void main(String[] args) {
int testValue = 23;
handleSomething(true, testValue, () -> checkIfZero(testValue));
handleSomething(false, testValue, () -> checkIfLargerThanZero(testValue));
}
private static boolean checkIfZero(int value) {
if (value == 0)
return true;
return false;
}
private static boolean checkIfLargerThanZero(int value) {
if (value > 0)
return true;
return false;
}
private static int handleSomething(boolean test, int value, Runnable function) {
if (test) {
System.out.println("Ignore");
return;
}
if (function.run() == true)
System.out.println("Passed");
else
System.out.println("Failed");
}
}
使用lambda表达式(而不是创建接口等),是否有更干净的方法来完成此操作?
使用@Holger提出的BooleanSupplier
是一种可能的解决方案。
但是,我建议使用intPredicate
,因为这允许您将testValue从HandleSomething
传递给谓词:
import java.util.function.IntPredicate;
public class Test {
public static void main(String[] args) {
int testValue = 23;
handleSomething(true, testValue, Test::checkIfZero);
handleSomething(false, testValue, Test::checkIfLargerThanZero);
}
private static boolean checkIfZero(int value) {
if (value == 0)
return true;
return false;
}
private static boolean checkIfLargerThanZero(int value) {
if (value > 0)
return true;
return false;
}
private static void handleSomething(boolean test, int value, IntPredicate function) {
if (test) {
System.out.println("Ignore");
return;
}
if (function.test(value))
System.out.println("Passed");
else
System.out.println("Failed");
}
}
IntelliJ一直建议我用方法引用替换我的lambda表达式。 两者之间有什么客观差异吗?
本文向大家介绍java lambda表达式用法总结,包括了java lambda表达式用法总结的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了java lamda表达式用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、什么是函数式编程(百度百科上的解释) 2、为什么要使用函数式编程(有什么好处) 1、代码简洁,减少代码量 2
问题内容: 我试图弄清楚如何从lambda表达式返回方法值: 但是,似乎在lambda表达式中使用关键字将显式返回lambda函数本身。是否有某种方式可以中断或强制返回整个方法? 问题答案: 是否有某种方式可以中断或强制返回整个方法? 不会。至少,除非抛出异常,否则不会。 基本上,这不是什么意思。您可以编写一个方法,该方法接受一个函数,该函数将返回“继续执行” ,而返回非null则表示“停止,并将
我正在编写一个lambda表达式来将给定的纬度和经度转换为地址。表达式应该以坐标为参数,并返回其相应的地址。但是,返回的值为null。以下是我的班级: 以下是logcat的输出: 以下是我的用法: 是类的对象,以下是相关接口: 当我尝试从相关适配器打印坐标时,它们会正确打印。因此,位置正在正确设置,但是当我试图从另一个类访问它时,它会显示字符串的空值。你能建议一个替代方法来从表达式中提取位置吗?
主要内容:作为参数使用Lambda表达式,访问变量,方法引用在《 Java Lambda表达式》和《 Java Lambda表达式的3种简写方式》一节中我们了解了 Java Lambda 的概念并可以在匿名类的场合使用 Lambda 语法进行简单替换。本节主要介绍在 Java 中如何使用 Lambda 表达式。 作为参数使用Lambda表达式 Lambda 表达式一种常见的用途就是作为参数传递给方法,这需要声明参数的类型声明为函数式接口类型。示例代码如下:
在使用lambda表达式返回字符串列表时,我得到了以下字符串: null 和更多的建议。但没有答案对我有帮助。 有人知道这段代码出了什么问题吗?