How do I write a new ListChangeListener() with lambda in java8?
listItems.addListener(new ListChangeListener<Item>() {
@Override
public void onChanged(
javafx.collections.ListChangeListener.Change<? extends Item> c) {
// TODO Auto-generated method stub
}
});
This is what I tried:
listItems.addListener(c->{});
But eclipse states:
The method addListener(ListChangeListener) is ambiguous for the type ObservableList.
The List is declared as:
ObservableList<Item> listItems = FXCollections.observableArrayList();
Since ObservableList
inherits addListener(InvalidationListener)
from the Observable
interface, the compiler is unable to determine which version to call. Specifying the type of the lambda through a cast should fix this.
listItems.addListener((ListChangeListener)(c -> {/* ... */}));
You can also explicitly specify the type of c
:
listItems.addListener((ListChangeListener.Change<? extends Item> c) -> {/* ... */});