java - 使用字符串流的函数不适用于单个字符串?
问题描述
在里面MyService
,我有以下指令,它会生成以分号分隔的用户电子邮件字符串:
users.stream()
.map(UserEntity::getEmail)
.filter(mailValidator.isValid())
.collect(Collectors.joining(";"));
MailValidator
被注入MyService
使用Spring。这是它的定义:
@Service
public class MailValidator {
private final Pattern mailRegex = Pattern.compile(/** some regular expression */);
public Predicate<String> isValid() {
return mailRegex.asPredicate();
}
}
一切正常。但MailValidator
我认为,以上内容在该用例之外没有用处。
更准确地说:我可以MailValidator
在字符串流上使用。不过,我怎样才能让它自己工作String
呢?
解决方案
您的isValid()
方法返回一些实现Predicate
接口的对象。如果您检查 Javadocs for Predicate它有一个test(T t)
方法。您所要做的就是在您的输入字符串上调用该方法。最后它可能看起来像这样:
String myStringVariable = "test";
boolean isValid = mailValidator.isValid().test(myStringVariable);
推荐阅读
- phpstorm - MantisBT 和 PhpStorm 的问题
- java - 在 Java 中的 Arraylist 中创建 Arrylist
- php - 正则表达式 (PHP) 删除除引号之间的所有水平空格(“”和 '')(包括转义引号)
- swift - 不能在属性初始化器中使用实例成员“月”;属性初始化程序在“自我”可用之前运行
- html - 在 CSS 网格内放置文本和按钮
- php - 将列的总和与 PDO 中具有嵌套选择查询的另一个表中的列进行比较
- javascript - Calculation on fields
- django - Passing keyword argument into formset that is extended from BaseFormSet
- c# - C# TCP 套接字高网络使用率
- php - 如何访问数组中的对象