我正在使用JXBrowser从网站提取信息的现有项目。它从网站对象中使用方法getRecords()
选择所有元素,并将其放入List<Element>
(import java.util.List
的一部分)中。这段代码是Browser Manager类中的一种方法,该方法创建并处理JXBrowser实例。
我希望saveRecords()
方法从网站提取数据,并将列表返回给我的主要工作执行者。但是,我的IDE将return records
部分标记为错误-“意外返回值”。
[我怀疑它可能与使用匿名方法有关,我没有写过自己,也没有任何经验。
public List<Element> saveRecord() {
if (website != null) {
browser.mainFrame().ifPresent(frame -> frame.document().ifPresent(document -> {
List <Element> records = website.getHandler().getRecords(document);
if (records.isEmpty()) {
log.error("no record found on site!");
} else {
return records;
}
}));
} else {
log.error("no handler found!");
}
}
我首先要指出我对编码还很陌生,所以这似乎很简单,但是我无法弄清楚。我正在使用JXBrowser提取...
List<Element>
。另一方面,您虽然从传递给Optional.ifPresent()
的函数(lambda)中返回(但并非在所有情况下都返回),但是lambda应该是Optional.ifPresent()
,因此不应返回任何内容。] >如果您不理解作为回调方法传递的函数(lambda)的原理,建议您在使用它们之前进行研究。或通过仅使用Consumer
和Consumer
来测试可选参数是否具有值并在存在时获取它,来保持命令式编程。
如果要使用函数式编程,则不应使用Optional.isPresent()
。您应该改用Optional.get()
,ifPresent()
和map()
将Optional转换为值。