使用列表 ]的方法中的“意外返回值” 我首先要指出我对编码还很陌生,所以这似乎很简单,但是我无法弄清楚。 我正在使用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转换为值。 在所有情况下,您需要决定的第一件事是,如果记录为空,该怎么办;如果网站为空,该怎么办。您不能只是不尝试做任何事情。您返回某些内容(例如,一个空列表),或者引发异常。但是您不能只记录不返回。 您需要在方法末尾使用return语句。如果结果为空,则可以返回空列表或引发异常。

问题描述 投票:0回答:2
我首先要指出我对编码还很陌生,所以这似乎很简单,但是我无法弄清楚。

我正在使用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提取...
java return jxbrowser
2个回答
1
投票
您没有从您的方法中返回任何内容,该方法应该返回一个List<Element>。另一方面,您虽然从传递给Optional.ifPresent()的函数(lambda)中返回(但并非在所有情况下都返回),但是lambda应该是Optional.ifPresent(),因此不应返回任何内容。] >

如果您不理解作为回调方法传递的函数(lambda)的原理,建议您在使用它们之前进行研究。或通过仅使用ConsumerConsumer来测试可选参数是否具有值并在存在时获取它,来保持命令式编程。

如果要使用函数式编程,则不应使用Optional.isPresent()。您应该改用Optional.get()ifPresent()map()将Optional转换为值。


0
投票
您需要在方法末尾使用return语句。如果结果为空,则可以返回空列表或引发异常。
© www.soinside.com 2019 - 2024. All rights reserved.