new*_*gic 1 java java-8 java-stream method-reference
根据:
https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html
看起来它是可能的,但是尝试真正返回编译错误.由于我们无法使用静态方法实现接口,因此它更有意义.
public class SomeClass {
static public boolean getB(){
return false;
}
}
List<SomeClass> list = new ArrayList<>();
list.add(new SomeClass());
// below causes compile error, which I expect, however documentation indicates oherwise
list.stream().filter(SomeClass::getB).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这是编译错误:
"此行的多个标记 - 应该以静态方式访问SomeClass类型的方法getB() - Stream类型中的方法过滤器(Predicate)不适用于参数(SomeClass :: getB)"
您可以,但方法的返回类型和参数必须与功能接口的唯一方法(Predicate<Something>此处)相匹配.
假设你的列表是a List<Something>,因为谓词应该基于Somethingas输入返回一个布尔值,如果你的方法定义为
public static boolean getB(Something s)
Run Code Online (Sandbox Code Playgroud)
要么
public static boolean getB(Object o)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |