小编jav*_*Bee的帖子

此表达式的目标类型应该是功能接口

下面的代码给我一个编译错误

.filter(Book::getPrice >200)
Run Code Online (Sandbox Code Playgroud)

编译错误是:此表达式的目标类型应该是功能接口

public void skipData() {
    List<Book> bookList = books.stream()
                                **.filter(Book::getPrice >200)**
                                .skip(5)
                                .collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)

我的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
}
Run Code Online (Sandbox Code Playgroud)

我试图在Eclipse(火星)和cmd线上运行它并看到同样的问题.

但如果我改变.filter(b -> b.getPrice() >200)它的工作原理.

我不清楚为什么方法参考在我的情况下不起作用.

java lambda java-8 method-reference

0
推荐指数
1
解决办法
2577
查看次数

标签 统计

java ×1

java-8 ×1

lambda ×1

method-reference ×1