gpt4 book ai didi

java - FileFilter Java 8 的方法引用

转载 作者:搜寻专家 更新时间:2023-11-01 02:05:52 24 4
gpt4 key购买 nike

我有以下 FileFilter 代码:

final FileFilter directoryFilter = new FileFilter()
@Override
public boolean accept(final File pathname)
{
return pathname.isDirectory();
}
};

我想用方法引用来写这个。这是我的第一次尝试:

final File test;
final FileFilter directoryFilter = test::isDirectory;

这给了我一个错误:

incompatible Types: invalid method reference.

如果我用像这样的 lambda 表达式尝试这个,它会起作用:

final FileFilter directoryFilter = pathname -> pathname.isDirectory()

我必须如何更改我的代码才能使方法引用起作用?

最佳答案

你需要使用

final FileFilter directoryFilter = File::isDirectory;

method reference与您编写的 lambda 表达式 pathname -> pathname.isDirectory() 完全相同。

具有语法 ContainingType::methodName 的方法引用用于引用 ContainingType 类型的任意对象的实例方法。

方法引用 test::isDirectory 实际上会引用特定 test 实例上的实例方法 isDirectory(不是任意的 文件实例)。

关于java - FileFilter Java 8 的方法引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33675681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com