2.4 真实的例子

Lambda表达式可代替匿名类,在Java API中的很多方法都可以应用。

下面展示三个例子,熟悉行为参数化。

  1. Comparator排序;
  2. Runnable执行;
  3. GUI事件处理。

2.4.1 用Comparator来排序

java.util.List自带默认方法sort,java.util.ArrayList覆写了sort

按苹果重量升序排序

// package java.util;
public class ArrayList<E> extends AbstractList<E>
        implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
@Override
@SuppressWarnings("unchecked")
public void sort(Comparator<? super E> c) {
    final int expectedModCount = modCount;
    Arrays.sort((E[]) elementData, 0, size, c);
    if (modCount != expectedModCount) {
        throw new ConcurrentModificationException();
    }
    modCount++;
}


// package java.util;
public interface Comparator<T> {
    int compare(T o1, T o2);
}
  
// invoke
inventory.sort((Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()));

2.4.2 用Runnable执行代码块

定义线程的代码执行块。

Thread t = new Thread(() -> System.out.println("Hello world"));

2.4.3 GUI事件处理

设置按钮的点击事件。

注意:需要从JavaFx Appliction启动,否则会报错java.lang.IllegalStateException: Toolkit not initialized。

Button button1 = new Button("Send"); 
button1.setOnAction((ActionEvent event) -> System.out.println("Sent!!"));
posted @ 2023-06-15 00:53  蒋智  阅读(17)  评论(0)    收藏  举报