【问题标题】:Is it possible to return more than one value in java function? [duplicate]java函数中是否可以返回多个值? [复制]
【发布时间】:2014-02-09 11:16:11
【问题描述】:

java函数可以返回多个值吗?喜欢,

public void retTest() {
    return (30,40,50);
}

//From Caller fun 
int a,b,c;
(a,b,c) = retTest();

【问题讨论】:

  • 没有。 Java没有像python那样的元组。您需要使用List 或数组。
  • 把这些东西放在一个对象中......然后返回这个对象......
  • @RohitJain 虽然返回一个元组并不完全算作返回多个值。我所知道的唯一真正具有多返回语义的语言是 Common Lisp。这些值都以相同的方式返回:在调用堆栈上。
  • 据我所知,OP 甚至没有要求从字面上返回多个值;他只是在寻找一些语法糖,比如元组文字和解构绑定。如果他们被认为是必不可少的,他们可能来到Java。
  • 另外,如果返回类型是void,它甚至不会返回一个值。

标签: java


【解决方案1】:

不,这是不可能的。 但是您可以使用返回一个封装所有数据的对象。这样编码、调试和数据提取变得更加容易,并且代码可增强性大大提高..

如:-

class Resut{

int a,b,c;
}

retTest()
{
return new Result();
}

【讨论】:

    【解决方案2】:

    您可以通过返回某种类型的List(如ArrayList)或其他一些集合或您自己的包含字段的自定义对象或数组来实现。

    对于像这样的元组结果,数组将是一个明智的选择。

    【讨论】:

      【解决方案3】:

      不,你不能在 Java 中返回很多参数,即使 out 关键字也不支持,你应该创建一个可能包含你的值的新类型并返回它。

      Class ReturnObject
      {
          //Fields you want to return here
          public ReturnObjectConstructor(InterParamtersHere)
          {
             // Initialize your fields here
          }
      
      }
      
      Public ReturnObject YourMethod()
      {
          ReturnObject returnObject = new ReturnObject(parameterHere)
          return returnObject;
      }
      

      【讨论】:

        【解决方案4】:

        你的方法定义可以如下

        public List<Integer> retTest() 
        

        您可以在其中返回ArrayList 的整数值,如下所示

                List<Integer> values = new ArrayList<Integer>() {
                    {
                        add(536);
                        add(85);
                        add(50);
                        add(45);
                    }
                };
        return values;
        

        【讨论】:

          猜你喜欢
          • 2013-02-23
          • 2014-10-23
          • 1970-01-01
          • 2011-02-04
          • 1970-01-01
          • 2014-06-14
          • 1970-01-01
          • 2015-08-24
          • 2021-04-16
          相关资源
          最近更新 更多