如果我有以下POJO呢?Library、Book、Author。在某个时候,我想在Library中查询与指定名称或其他关键字匹配的所有图书和作者,并返回匹配的图书和作者。但问题是Book和Author没有继承相同的接口来在谓词中使用。你能解释一下在这种情况下如何使它工作吗?
图书馆应用程序怎么样?Library
(类(将书籍(Book
类(存储为List<Book>
集合。Book
具有属性(或属性(title
和author
(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);