Java中一次多重分配

qed*_*qed 3 java assign

在python中,您可以执行以下操作:

def f():
    return 1, 2, 3
(foo, bar, baz) = f()
Run Code Online (Sandbox Code Playgroud)

在Java中是否有等效项?

小智 6

tl; dr:不,Java中没有这样的东西。

可以将初始值分配给变量,如下所示:

int foo = 1, bar = 2;
Run Code Online (Sandbox Code Playgroud)

但是,如果您希望(1, 2, 3)成为方法调用的结果,那么在Java中是不可能的。Java不允许返回多个值。

Python允许这样做:

def foo():
    return 1, 2, 3

a, b, c = foo()
Run Code Online (Sandbox Code Playgroud)

最主要的原因是,赋值的左侧(LHS)必须是一个变量,这在Java中为何不起作用:

Wrapper wrapper = WrapperGenrator.generateWrapper();
Run Code Online (Sandbox Code Playgroud)

不能 像在Python中那样在LHS上分配一个元组。