Java 知识量:11 - 45 - 220
Lambda表达式是Java 8开始引入的一个特性,是一种简洁的表示匿名函数的方法,它没有名称,但有参数列表,函数体,返回值,和类型。
嵌套类是Java中的一种类,它被定义在另一个类的内部。嵌套类分为两种:静态和非静态。非静态嵌套类与外部类有相同的访问限制,而静态嵌套类则可以直接访问外部类的所有成员,包括私有成员。
Lambda表达式在Java中主要用于简化函数式编程的语法,并且可以与Java的内部类很好地配合使用。下面是一个使用Lambda表达式和嵌套类的简单示例:
public class NestedLambdaExample { public static void main(String[] args) { List<String> list = Arrays.asList("Apple", "Banana", "Cherry"); // 使用lambda表达式和内部类创建谓词 Predicate<String> isLong = new Predicate<String>() { @Override public boolean test(String s) { return s.length() > 5; } }; // 使用lambda表达式和Stream API过滤列表 List<String> result = list.stream() .filter(isLong) .collect(Collectors.toList()); System.out.println(result); // 输出:[Apple] } }
在这个例子中,首先创建了一个字符串列表。然后,定义了一个内部类Predicate<String>,该类实现了test方法,用于判断字符串的长度是否超过5。这是一种传统的实现方式,但使用lambda表达式,可以更简洁地表达这个谓词:
Predicate<String> isLong = s -> s.length() > 5;
最后,使用Stream API的filter方法过滤列表。在这个例子中,filter方法接受一个Predicate作为参数,对列表中的每个元素应用这个谓词,并返回一个新的流,其中只包含满足条件的元素。
可以使用lambda表达式来表示一个简单的算数运算:
// 定义一个执行加法的函数式接口 @FunctionalInterface interface Adder { int add(int a, int b); } // 使用lambda表达式创建Adder实例 Adder adder = (a, b) -> a + b; // 使用Adder实例进行加法运算 int sum = adder.add(1, 2); // sum为3
方法引用是Java 8中引入的一种新特性,它是lambda表达式的简化版本。如果一个方法或构造函数只有一个参数,那么可以使用方法引用来简化lambda表达式的书写。方法引用的语法是:
::methodName
可以使用方法引用来简化上述Adder接口的实例化:
Adder adder = Integer::sum; // 使用方法引用创建Adder实例 int sum = adder.add(1, 2); // sum为3
这里,Integer::sum是一个方法引用,它引用的是Integer类中的sum方法。因为sum方法接受两个参数,所以可以直接用于Adder接口的实现。
无论是lambda表达式还是方法引用,都使得Java代码更加简洁,可读性更高,同时更易于理解函数式编程的范式。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6