在Java中返回多个值

在Java中返回多个值,java,function,return,Java,Function,Return,我用Java编写了一个函数,我希望这个函数返回多个值。除了使用数组和结构外,是否有方法返回多个值 我的代码: String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x; Cursor c = db.rawQuery(query, null); if (c!= null && c.moveToFirst()) { GoodNameShow = c.getString(0);

我用Java编写了一个函数,我希望这个函数返回多个值。除了使用数组和结构外,是否有方法返回多个值

我的代码:

String query40 = "SELECT Good_Name,Quantity,Price from Tbl1 where Good_ID="+x;
Cursor c = db.rawQuery(query, null);
if (c!= null && c.moveToFirst()) 
{
  GoodNameShow = c.getString(0);
  QuantityShow = c.getLong(1);
  GoodUnitPriceShow = c.getLong(2);
  return GoodNameShow,QuantityShow ,GoodUnitPriceShow ;
}

在Java中,当您希望函数返回多个值时,必须

  • 将这些值嵌入到返回的对象中
  • 或者更改传递给函数的对象
在您的情况下,您显然需要定义一个类
Show
,该类可以包含字段
name
quantity
price

public class Show {
    private String name;
    private int price;
    // add other fields, constructor and accessors
}
然后将函数更改为

 public  Show  test(){
      ...
      return new Show(GoodNameShow,QuantityShow ,GoodUnitPriceShow) ;

我已经制定了一个非常基本的方法来处理这种情况

我在字符串中使用了分隔符的逻辑

例如,如果需要在同一函数中返回 1.整数值 2.双值 3.字符串值

您可以使用分隔符字符串

例如“,,”这种字符串通常不会出现在任何地方

可以返回由该分隔符分隔的所有值组成的字符串 ,,,,

并转换为等效类型,其中函数已通过使用String.split(separator)[index]调用

有关说明,请参阅以下代码-

已使用分隔符=“,”

当您不想增加仅用于函数返回的类数时,可以将此方法用作快捷方式


这取决于不同情况下采取何种方法。

重要的不是“Eclipse”,而是语言(Java)。我知道你的代码是伪Java,但请确保你用camelCase命名变量(例如,
goodNameShow
goodUnitPriceShow
)。@estiedi你的意思是说
Collection.sort
是糟糕的风格吗?如果你试图让那些不了解该语言最基本事实的人理解你的代码,那么你就无法编写出高效的代码。如果有人不知道接收到的对象可以通过某种方法进行更改,那么他必须在加入专业团队之前进行学习。但令人遗憾的是,语言没有从CLU示例中学习。CLU的相关多重赋值使用起来有点可疑(
x,y=y,x
),但多重返回值非常有用(
x,y=function(params)
)。强制返回包装对象(通常是通过类似于
类对
的“干净”声明)在很多紧密调用下都会受到惩罚,并且传递一个对象来保存返回值是非常混乱的,没有编译器保证字段被填充。@tgm1024您应该看看Go,其中返回多个值和多个赋值的bot非常有用;)尽管这个建议并没有增加类的数量,但由于许多原因,它是一种可怕的方法:您创建了多个不必要的对象(
StringBuilder
String
s),这些对象比实用程序类的单个实例要昂贵得多。检索值的工作量太大,需要不必要的代码,并且对性能有明显的影响。正如您已经注意到的,分隔符不能出现在字符串中,这通常是一个不合理的假设。这对性能和可读性都不好,calee永远不知道这样的回报会带来什么。@still_learning-我知道就性能而言,这种方法非常糟糕,但这只是我开始编程时所做实践的一部分。我主要在julia和matlab上工作,在那里你可以返回多个VAL,比如,返回var1,var2等等。。。因此,当我开始使用JAVA时,我只是作为练习的一部分。我真的认为它会工作得很好,但后来我觉得它的性能很差。
public class TestMultipleReturns{

 public static void main(String args[]){

   String result =  getMultipleValues();
   int intval = Integer.parseInt(result.split(",.,")[0]);
   double doubleval = Double.parseDouble(result.split(",.,")[1]);     
    String strval = result.split(",.,")[2];
 }

 public static String getMultipleValues(){

   int intval = 231;//some int value      
   double doubleval = 3.14;//some double val
   String strval = "hello";//some String val

   return(intval+",.,"+doubleval+",.,"+strval);

 }
}