将Array中的Variable直接设置为Java中的变量列表

时间:2008-12-11 16:46:06

标签: java function return

我有一个Java方法,它返回一个双精度数组。然后,我想将这些值存储在调用函数中的各个变量中。在Java中是否有一种优雅的方式。

我可以这样写:

double[] returnValues = calculateSomeDoubles();
double firstVar  = returnValues[0];
double secondVar = returnValues[1];

我只是想知道是否有某种方法可以将其压缩到单行?类似的东西:

(firstVar, secondVar) = calculateSomeDoubles();

这种类型的东西在编写脚本时非常容易,但Java的强类型意味着它可能是不可能的。

4 个答案:

答案 0 :(得分:5)

基本上不,这是不可能的。

您必须返回包含值的对象。

MyObject myObject = calculateMyObject();

答案 1 :(得分:1)

唯一的方法是使用反射,前提是你知道方法“calculateSomeDouble”将返回多少项。

需要 this 的变体形式。但正如你所看到的那样,代码还有更多。

那么提出的问题是什么?你想要这个自动化的东西吗?或者节省开发时间(避免复制/粘贴)?

如果要自动完成某项任务(比如在运行时填充对象),则可以进行反射调用并编写方法。

您需要设置值而不是仅打印它。

客户端调用应该看起来像

 SomeUtility.fill( myObject , withDoublesFromMethod() );

答案 2 :(得分:1)

当你没有得到2个双值时,你可以通过参考

来调用你的方法
void methode(double[] array)

您可以提交长度为2的数组,并将值放在方法之前。

如果返回的值可以更改,则返回Collection。

List methode()

我不是像

那样返回值的朋友
double[] methode()

当您使用Lists或Collections时,methode与您处理数组时一样静态。您可以在其他项目中更好地重用该方法。

答案 3 :(得分:0)

我的第一直觉是质疑你做这样事情的动机。如果您的程序中有一组相关的双打,为什么不将它们存储在列表中?

如果你是,你可以做这样的事情:

List<Double> myVars = Arrays.asList(calculateSomeDoubles());

但是如果你必须将它们存储在单独的变量中,那么就无法在一行中干净利落地完成它们。我建议你使用一些建议的基于反射的解决方案。如您最初建议的那样简单地在多行中写出您的作业可能会好得多。