运维开发网

Lambda表达式-事件处理器

运维开发网 https://www.qedev.com 2021-04-23 09:11 出处:51CTO 作者:mob604756f8c81a
该监听器在必要时可被复用,但如果它仅需被使用一次,则考虑了一种很好的方式。 button.addActionListener(event -> {ui.showSomething();}); 本例中,这种使用附加大括号的语法有点奇怪,但是这是必须的,因为actionPerformed()方法返回void。稍后我们将看到更多与此相关的内容。 我们现在来看一看Lambda表达式在编写处理集合对象的新式代码时所起的作用,特别是在采用两种编程风格时,即外部遍历和内部遍历之间的转换。

事件处理器

用户界面程序是其他大量使用匿名内部类的领域。现在,我们来为一个按钮分配一个监听器

Lambda表达式-事件处理器

这多么代码无非是说”当点击该按钮时,调用该方法”。使用Lambda表达式就可写出代码

Lambda表达式-事件处理器

该监听器在必要时可被复用,但如果它仅需被使用一次,则考虑了一种很好的方式。

button.addActionListener(event -> {ui.showSomething();});

本例中,这种使用附加大括号的语法有点奇怪,但是这是必须的,因为actionPerformed()方法返回void。稍后我们将看到更多与此相关的内容。

我们现在来看一看Lambda表达式在编写处理集合对象的新式代码时所起的作用,特别是在采用两种编程风格时,即外部遍历和内部遍历之间的转换。

外部遍历vs内部遍历

迄今为止,处理Java集合对象的标准方法是通过外部遍历。我们称之为“外部遍历”,因为您想要使用集合对象外部的控制流程来遍历集合包含的元素。大多数Java程序员都非常熟悉这种处理集合的传统方法,尽管他们并不知道也不使用外部遍历这个术语。

Java语言为增强的for循环构造了一个外部迭代器,并使用这个迭代器去遍历集合对象,

Lambda表达式-事件处理器

使用这种方法,集合类代表着全部元素的一个”整体”视图,并且该集合对象还能支持对任意元素的随机访问,程序员可能会有这种需求。

基于这种观点,可通过调用iterator()方法去遍历集合对象,该方法将返回集合元素类型的迭代器,该迭代器是针对同一集合对象的更具限制性的视图。它没有为随机访问暴露任何接口;相反,它纯粹是为了顺序地访问集合元素而设计的。这种顺序本性使得当你试图并发地访问集合对象时就会造成臭名昭著的ConcurrentModificationException。

另外一个可选方案是要求集合对象能够在内部管理迭代器(或循环),这种方案称为内部遍历,并且在使用Lambda表达式时优先选择内部遍历。

除新的Lambda表达式语法外,Lambda项目还包含了大量更新的集合框架类库。该升级旨在使编写使用内部遍历的代码更加容易,从而支持一系列著名的函数式编程模式。

0

精彩评论

暂无评论...
验证码 换一张
取 消