2.4 真实的例子
Lambda表达式可代替匿名类,在Java API中的很多方法都可以应用。
下面展示三个例子,熟悉行为参数化。
- Comparator排序;
- Runnable执行;
- 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!!"));

浙公网安备 33010602011771号