栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第2章 Lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第2章 Lambda表达式

2.1 第一个Lambda表达式 例2-1 使用匿名内部类将行为和按钮单击进行关联
button.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
    System.out.println("按钮被点击");
  }
});
例 2-2 使用Lambda表达式将行为和按钮单击进行关联
button.addActionListener(e -> System.out.println("按钮被点击"));
2.2 如何辨别Lambda表达式 例2-3 编写Lambda表达式的不同形式
Runnable thread01 = () -> System.out.println("Hello World");
ActionListener listener = event -> System.out.println("按钮被点击");
Runnable thread02 = () -> {
  System.out.println("Hello");
  System.out.println(" World");
};
BinaryOperator add01 = (x, y) -> x + y;
BinaryOperator add02 = (Long x, Long y) -> x + y;
例2-4 等号右边的代码并没有声明类型,系统根据上下文推断出类型信息
final String[] array = {"hello", "world"};
2.3 引用值,而不是变量 例2-5 匿名内部类中使用final局部变量
 final String name = getUserName();
 button.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
     System.out.println("hi " + name);
   }
 });
例2.6 Lambda表达式中引用既成事实上的final变量
final String name = getUserName();
button.addActionListener(event -> System.out.println("hi " + name));
例2.7 未使用既成事实上的final变量,导致无法通过编译
final String name = getUserName();
name = formatUserName(name);
button.addActionListener(event -> System.out.println("hi " + name));
2.4 函数接口 例2-8 ActionListener接口:接受ActionEvent类型的参数,返回空
public interface ActionListener extends EventListener {
  public void actionPerformed(ActionEvent e);
}
表2-1 Java中重要的函数接口
接口参数返回类型实例
PredicateTboolean这种唱片已经发行了吗
ConsumerTvoid输出一个值
FunctionTR获得Artist对象的名字
SupplierNoneT工厂方法
UnaryOperatorTT逻辑非(!)
BinaryOperato(T, T)T求两个数的乘积(*)
2.5 类型推断 2-9 使用菱形操作符,根据变量类型做推断
Map oldWordCounts = new HashMap();
Map diamondWordCounts = new HashMap<>();
2-10 使用菱形操作符,根据方法签名做推断
useHashMap(new HashMap<>());
...
private void useHashMap(HashMap value);
2-11 类型推断
Predicate atLeast5 = x -> x > 5;
2-12 Predicate接口的源码,接受一个对象,返回一个布尔值
public interface Predicate {
  boolean test(T t);
}
2-13 略显复杂的类型推断
BinaryOperator addLongs = (x, y) -> x + y;
2-14 没有泛型,代码则通不过编译
BinaryOperator addLongs = (x, y) -> x + y;

注意:运算符 ‘+’ 不能应用于 ‘java.lang.Object’、‘java.lang.Object’

2.6 要点回顾

Lambda表达式是一个匿名方法,将行为像数据一样进行传递。Lambda表达式的常见结构: BinaryOperator add = (x, y) -> x + y。函数接口指仅具有单个抽象方法的接口,用来表示Lambda表达式的类型。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711209.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号