下面的一段代码给了我一个编译错误
.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)
它可以工作。
我不清楚为什么方法参考在我的情况下不起作用。