Ниже фрагмент кода дает мне ошибку компиляции в
.filter(Book::getPrice >200)
Ошибка компиляции: целевой тип этого выражения должен быть функциональным интерфейсом.
public void skipData() {
List<Book> bookList = books.stream()
**.filter(Book::getPrice >200)**
.skip(5)
.collect(Collectors.toList());
}
Мой класс Book.java выглядит следующим образом:
public final class Book {
private String title;
private String genre;
private double price;
public Book(String title, String genre, double price) {
this.title = title;
this.genre = genre;
this.price = price;
}
public double getPrice() {
return price;
}
//other getters
}
Я попытался запустить это в Eclipse (Mars), а также в строке cmd и увидел ту же проблему.
Но если я изменю его на .filter(b -> b.getPrice() >200)
, он сработает.
Мне непонятно, почему ссылка на метод не работает в моем случае.
books
? - person Jim Garrison   schedule 13.09.2015