如何从函数中返回值而不退出函数?

时间:2019-05-10 08:03:17

标签: java arraylist

我正在从另一个字节数组列表的数组列表中添加字节数组。所以,基本上,我在玩嵌套字节数组。我能够添加每个字节数组的第一个索引,但是我无法立即返回它。添加所有索引后,该函数将返回整个字节数组。但是,我想分别返回每个索引的总和。

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[]

1 个答案:

答案 0 :(得分:2)

您的代码在许多级别上都是错误的,列表很短(可能不完整):

  • 您违反了Java命名约定。方法名称也为camelCase(),变量名称也为变量名称(除非常量)。而且您只在SOME_CONSTANT中使用“ _”
  • 术语“流”在Java中具有非常特殊的含义。 列表不是(但是您可以通过yourList.stream()从列表创建真正的Java流)
  • 是的,您打算在while循环中执行的操作超出了我的创造力。老实说:丢掉,从头开始。

关于您的真实问题:非void方法的每个“退出”路径都需要引发异常或返回

最后:您打算做的事不可能像Java中那样。调用方调用一个方法,该方法返回一个值,然后结束

可以做的事情是这样的:

  • 线程A创建someList并将其以某种方式传递给某些线程B
  • 线程B操作该列表对象,并且通过使用适当的同步,另一个线程可以访问该数据(而B继续进行更新)

真正的答案是:您不能通过假设来学习一种新语言,而该语言支持您从其他语言(例如python生成器)中了解的概念,然后再发明您自己的语法或使用新语言的构造,然后会感到惊讶,“天哪,它不起作用”。反过来:您研究目标语言是否具有这样的概念,否则,您研究其他语言。然后,您将阅读有关该主题的教程,并按照它进行操作。