如果我有:
class B
{
public static boolean test1(File f)
{
return true;
}
public boolean test2(File f)
{
return true;
}
}
以下转换为完整的 lambda 表达式是否正确?
File dir = new File("C:\\TEST");
// here UNBOUND instance method reference
// converted as? dir.listFiles((File f) -> f.isFile());
dir.listFiles(File::isFile);
// here static method reference
// converted as? dir.listFiles((File f) -> B.test1(f));
dir.listFiles(B::test1);
// here BOUND instance method reference
// converted as? dir.listFiles((File f) -> b.test2(f));
B b = new B();
dir.listFiles(b::test2);
然后,还有一个问题:如果我写:dir.listFiles(B::test2);
我从编译器那里得到:
non-static method test2(File) cannot be referenced from a static context
但为什么该错误不会引发:dir.listFiles(File::isFile);