Java 如何在不退出函数的情况下从函数返回值?

Java 如何在不退出函数的情况下从函数返回值?,java,arraylist,Java,Arraylist,我从另一个字节数组列表的数组列表中添加字节数组。所以,基本上,我是在玩嵌套字节数组。我可以添加每个字节数组的第一个索引,但无法立即返回它。添加所有索引后,该函数将返回整个字节数组。但是,我想分别返回每个索引的总和 public static byte[] final_stream(ArrayList<ArrayList<byte[]>> outerstream) { ArrayList<byte[]> streams = new 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[]

您的代码在许多级别上都是错误的,下面是一个可能不完整的列表:

您违反了java命名约定。方法名按大小写,变量名也按常量命名。你只对某个常数使用u 术语流在Java中有非常特殊的含义。列表不是流,但您可以通过yourList.stream从列表创建真正的java流 是的,你们打算在while循环中做什么超出了我的创造力去解释。老实说:扔掉它,从头开始。 关于您真正的问题:非void方法的每个退出路径都需要抛出异常或返回某些内容

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

你能做的是:

线程A创建someList并以某种方式将其传递给某个线程B 线程B操纵该列表对象,通过使用适当的同步,另一个线程可以在B继续进行更新时访问该数据
而真正的答案是:你不能通过假设一门新语言支持一个你从其他语言(如pythons生成器)中知道的概念来学习一门新语言,然后用新语言发明你自己的语法或构造,然后惊讶地发现天哪,它不起作用。反过来说:你研究你的目标语言是否有这样一个概念,如果没有,你研究还有什么可以提供。然后你读了一篇关于这方面的教程,并遵循这一点

你不能。返回值后,该方法即告完成。您的问题是,在x>outerstream.size的情况下,您的方法不返回值,但它必须返回,因为这是由方法签名决定的。我对那个代码很困惑。为什么要在外部while循环和for循环中迭代外部流?什么是stream_Addr?在streams.addbytes.remove0中;您首先删除第0个元素,然后将剩余字节添加到流中-为什么?@Stultuske我支持您的评论,但为了好玩,我必须指出,您可以使用try{return…;}返回一个值,并在函数中停留更长的时间。最后,在返回*/}后执行{/*执行。但当然,这与将返回值存储在局部变量中并稍后返回没有任何好处。