如何使用谓词来筛选不继承同一接口的多个POJO



如果我有以下POJO呢?Library、Book、Author。在某个时候,我想在Library中查询与指定名称或其他关键字匹配的所有图书和作者,并返回匹配的图书和作者。但问题是Book和Author没有继承相同的接口来在谓词中使用。你能解释一下在这种情况下如何使它工作吗?

图书馆应用程序怎么样?Library(类(将书籍(Book类(存储为List<Book>集合。Book具有属性(或属性(titleauthor(Author类具有name属性(。

为了搜索图书馆中的书籍,可以定义多个谓词(类型为java.util.function.Predicate(;例如,通过title搜索图书馆中书籍的谓词可以类似于:

Predicate<Book> titleMatch = book -> book.getTitle().contains(searchBookTitle);

其中,searchBookTitle是所提供的搜索字符串。

因此,通过应用谓词的搜索条件(按标题搜索,如上面的谓词示例所示(过滤库的books集合,并打印匹配的书籍。

books.stream()
.filter(titleMatch)
.forEach(System.out::println);

可以定义更多的谓词(并根据需要应用(,下面是一些:

Predicate<Book> authorMatch = b -> b.getAuthor().getName().contains(inAuthorName);
Predicate<Book> bookAndAuthorMatch = bookMatch.and(authorMatch);
Predicate<Book> bookOrAutherMatch = bookMatch.or(authorMatch);

最新更新