java - 如何在不退出函数的情况下从函数返回值?
问题描述
我正在从另一个字节数组列表的数组列表中添加字节数组。所以,基本上,我在玩嵌套字节数组。我能够添加每个字节数组的第一个索引,但我无法立即返回它。添加所有索引后,该函数将返回整个字节数组。但是,我想分别返回每个索引的总和。
public static byte[] final_stream(ArrayList<ArrayList<byte[]>> outerstream) {
ArrayList<byte[]> streams = new ArrayList<byte[]>();
int x = 0;
while (x < outerstream.size()) {
streams = new ArrayList<byte[]>();
for (ArrayList<byte[]> bytes : outerstream) {
streams.add(bytes.remove(0));
}
x++;
return stream_Addr(streams); // Here I want to return the value
}
} // Here it gives error to return byte[]
解决方案
您的代码在许多层面上都是错误的,一个快速(可能不完整)的列表:
- 你违反了java命名约定。方法名也使用 camelCase() 和变量名(除非常量)。而且您只使用“_”作为 SOME_CONSTANT
- 术语“流”在 Java 中具有非常特殊的含义。列表不是流(但您可以从列表中创建真正的 java 流)
yourList.stream()
- 是的,你打算在那个while循环中做什么超出了我的创造力来解释。老实说:把它扔掉,从头开始。
关于您的真正问题:非 void 方法的每个“退出”路径都需要抛出异常或返回某些内容。
最后:你打算做的事情在 Java 中是不可能的。调用者调用一个方法,该方法返回一个值,然后结束。
你可以做的,是这样的:
- 线程A以某种方式创建
someList
并将其传递给某个线程B - 线程 B 操作该列表对象,并且通过使用适当的同步,另一个线程可以访问该数据(而 B 继续进行更新)
真正的答案是:你不能通过假设语言支持你从其他语言(如 python 生成器)中知道的概念来学习新语言,然后发明你自己的语法或用新语言构造然后感到惊讶“天哪,它不起作用”。反过来说:你研究你的目标语言是否有这样的概念,如果没有,你研究还有什么提供。然后,您阅读了有关该内容的教程,然后按照该教程进行操作。
推荐阅读
- ios - XCUIElementQuery 将匹配自定义类的所有实例
- reactjs - 使用输入值使用 useState 添加到数组 - React
- c# - 如何从 Active Directory 的 whenChanged 属性中获取上一个日期和现在之间的用户?
- python - 如何使用 python 请求和 pandas 模块检查 target.com 的产品可用性
- c++ - 检测文件夹是否为云文件夹
- python - 交互或取消在 bash 和 zsh 中等待输入的命令
- snowflake-cloud-data-platform - 使用 SQL 和 Snowflake 在存储过程中创建临时表
- json - 如何使用 jq 合并和聚合 2 个 JSON 文件中的值?
- javascript - 遍历 JSON 并重新格式化数字/货币/百分比
- python - 当我将其更改为不时,为什么此尝试循环循环?