将数组中的变量直接设置到Java中的变量列表中

将数组中的变量直接设置到Java中的变量列表中,java,function,return,Java,Function,Return,我有一个Java方法,它返回一个双精度数组。然后,我想将这些值存储在调用函数的各个变量中。在Java中是否有一种优雅的方法可以做到这一点 我可以这样写: double[] returnValues = calculateSomeDoubles(); double firstVar = returnValues[0]; double secondVar = returnValues[1]; 我只是想知道有没有办法把它压缩成一行?比如: (firstVar, secondVar) = calcu

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

我可以这样写:

double[] returnValues = calculateSomeDoubles();
double firstVar  = returnValues[0];
double secondVar = returnValues[1];
我只是想知道有没有办法把它压缩成一行?比如:

(firstVar, secondVar) = calculateSomeDoubles();

当编写脚本时,这类事情非常容易,但Java的强类型意味着这可能是不可能的。

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

需要的变化。但正如您所看到的,还有更多的代码需要编写

所以提出的问题是?你想用这个做自动化的东西吗?还是为了节省开发时间(避免复制/粘贴)

如果您想要自动化某些任务(比如在运行时填充对象),那么执行反射调用并编写方法是值得的

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

客户端调用应该如下所示

 SomeUtility.fill( myObject , withDoublesFromMethod() );

基本上不,这是不可能的

您必须返回一个包含这些值的对象

MyObject myObject = calculateMyObject();

当你没有得到2个双倍值时,你可以使用callbyreference调用你的方法

void methode(double[] array)
您可以提交一个长度为2的数组,并将值放在methode中

或者,如果返回的值可以更改,则返回集合

List methode()
我不是像这样返回值的朋友

double[] methode()

当您使用列表或集合时,方法与处理数组时一样是静态的。您可以在其他项目中更好地重用该方法。

我的第一反应是怀疑您这样做的动机。如果您的程序中有一组相关的双工,为什么不将它们存储在列表中

如果你是,你可以这样做:

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

但是,如果必须将它们存储在单个变量中,则不能在一行中干净地完成。我建议您不要使用所建议的一些基于反射的解决方案。按照您最初的建议,简单地用多行写出您的作业可能会更好。

我考虑过使用列表作为返回值(或类似的东西,可能是HashMap),但我认为为了可读性,我最终会将它们分配给更好的名称,因此更容易返回一个双精度数组。