在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Java Lambda语法使用lambda表达式的一般语法是 (Parameters) -> { Body }
参数括在括号中,与方法相同,而lambda表达式主体是用大括号括起来的代码块。 注意lambda表达式主体可以有局部变量,语句。我们可以在lambda表达式主体中使用break,continue和return。我们甚至可以从lambda表达式主体中抛出异常。 lambda表达式没有名称,因为它表示匿名内部类。 lambda表达式的返回类型由编译器推断。 lambda表达式不能像方法一样有throws子句。 lambda表达式不能是泛型,而泛型在函数接口中定义。 显式和隐式lambda表达式未声明其参数类型的lambda表达式称为隐式lambda表达式。 显式lambda表达式是一个lambda表达式,它声明其参数的类型。 编译器将推断用于隐式lambda表达式的参数类型 例子以下代码使用单一方法创建接口,并将其用作lambda表达式类型。当创建lambda表达式时,我们声明参数 public class Main { public static void main(String[] args) { MyIntegerCalculator myIntegerCalculator = (Integer s1) -> s1 * 2; System.out.println("1- Result x2 : " + myIntegerCalculator.calcIt(5)); } } interface MyIntegerCalculator { public Integer calcIt(Integer s1); } 上面的代码生成以下结果。 例2这里是没有使用类型的演示。当忽略类型时,编译器必须计算出来。 public class Main { public static void main(String[] args) { MyIntegerCalculator myIntegerCalculator = (s1) -> s1 * 2; System.out.println("1- Result x2 : " + myIntegerCalculator.calcIt(5)); } } interface MyIntegerCalculator { public Integer calcIt(Integer s1); } 上面的代码生成以下结果。 省略参数类型我们可以选择省略lambda表达式中的参数类型。 在lambda表达式 我们可以安全地重写lambda表达式,省略参数类型 (x, y) -> { return x + y; } 如果我们选择省略参数类型,我们必须省略所有参数的类型。 public class Main { public static void main(String[] argv) { Processor stringProcessor = (str) -> str.length(); String name = "Java Lambda"; int length = stringProcessor.getStringLength(name); System.out.println(length); } } @FunctionalInterface interface Processor { int getStringLength(String str); } 上面的代码生成以下结果。 单参数对于单个参数lambda表达式,我们可以省略括号,因为我们省略了参数类型。 lambda表达式 然后我们可以省略参数类型 (msg)->{System.out.println(msg);} 我们可以进一步省略参数类型和括号,如下所示。 msg -> { System.out.println(msg); } public class Main { public static void main(String[] argv) { Processor stringProcessor = str -> str.length(); String name = "Java Lambda"; int length = stringProcessor.getStringLength(name); System.out.println(length); } } @FunctionalInterface interface Processor { int getStringLength(String str); } 上面的代码生成以下结果。 无参数对于没有参数的lambda表达式,我们仍然需要括号。 () -> { System.out.println("hi"); } 以下示例显示如何使用 import java.util.function.BooleanSupplier; public class Main { public static void main(String[] args) { BooleanSupplier bs = () -> true; System.out.println(bs.getAsBoolean()); int x = 0, y= 1; bs = () -> x > y; System.out.println(bs.getAsBoolean()); } } 上面的代码生成以下结果。
|
请发表评论