The biggest language change in Java 8 is the introduction of lambda expressions—a compact way of passing around behavior. They are also a pretty fundamental building block that the rest of this book depends upon, so let’s get into what they’re all about.
Swing is a platform-agnostic Java library for writing graphical user interfaces (GUIs). It has a fairly common idiom in which, in order to find out what your user did, you register an event listener. The event listener can then perform some action in response to the user input (see Example 2-1).
In this example, we’re creating a new object that provides an implementation
ActionListener class. This interface has a single method,
actionPerformed, which is called by the
button instance when a user actually
clicks the on-screen button. The anonymous inner class provides the
implementation of this method. In Example 2-1, all it does is print
out a message to say that the button has been clicked.
This is actually an example of using code as data—we’re giving the button an object that represents an action.
Anonymous inner classes were designed to make it easier for Java programmers to pass around code as data. Unfortunately, they don’t make it easy enough. ...