java - 创建自定义参数匹配器混淆实现
问题描述
我见过有人创建了一个自定义参数匹配器,如下所示。但是,我很难理解它是如何工作的。
我可以理解它的一个方法,它接受一个参数并返回一个 ArgumentMatcher,它是一个类型为List<Person>
. 而被覆盖的方法是使用 lambda 的匹配器。我认为身体部分是最令人困惑的,如果有人能解释的话。
private ArgumentMatcher<List<Person> personListSize(final int size) {
return argument -> argument.personList().size() == size;
}
这是我通常会做这样的事情的方式,这对我来说更容易理解,只是想知道我怎样才能让下面看起来像上面那样?
public class CustomArgumentMatcher implements ArgumentMatcher<List<Person>> {
@Override
public boolean matches(List<Person> argument) {
return argument.size() == size;
}
}
刚刚开始理解,这有效:
private ArgumentMatcher<String> stringMatcher = new ArgumentMatcher<String>() {
@Override
public boolean matches(String argument) {
return argument.contains("");
}
};
但是,如果我像这样添加要传入的参数:
private ArgumentMatcher<String> stringMatcherArgs(final String name) = new ArgumentMatcher<String>() {
}
我收到一条错误消息,说unexpected token
只是想在上面传递一个参数?
解决方案
您应该阅读有关Lambda 表达式的文档
以下是您的示例:
private ArgumentMatcher<List<Person>> customArgumentMatcher(final int size) {
return argument -> argument.size() == size;
}
private ArgumentMatcher<List<Person>> stringMatcherArgs(final String name) {
return argument -> argument.contains(name);
}
推荐阅读
- java - 在 textview 上使用 setText 会使我的应用程序崩溃,并且似乎没有任何效果。我尝试了很多解决方案,但没有任何效果
- python - 获取 pandas groupby 对象的最大 count() 函数
- unity3d - unity PostLateUpdate.UpdateAudio 高 cpu 使用率
- laravel - Laravel - 如何将自定义数据添加到 SES 反弹有效负载
- java - 无法将 kotlin jar 作为另一个项目中的依赖项拉取
- python - 从烧瓶中的蓝图文件导入错误?
- powershell - 使用powershell移动文件时如何执行记事本
- android - 为什么除了 OnCreate() 方法之外没有调用其他活动生命周期
- wpf - 列表视图行中的 WPF MVVM 按钮不起作用,除非首先单击行
- node.js - Node.js 发布请求挂起