使用三元运算符初始化数组

mar*_*igo 14 java arrays ternary-operator

我试过这样的事情:


boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};

但是这段代码甚至都不会编译.这有什么解释吗?是不是 funkyBoolean ? {1,2,3} : {4,5,6} 一个有效的表达?提前致谢!

Ste*_*n C 31

您只能{1, 2, 3}在非常有限的情况下使用语法,而这不是其中之一.试试这个:

int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
Run Code Online (Sandbox Code Playgroud)

顺便说一下,好的Java风格是将声明写成:

int[] array = ...
Run Code Online (Sandbox Code Playgroud)

编辑:对于记录,{1, 2, 3}限制的原因是它的类型是模糊的.从理论上讲,它可能是一个整数,长整数,浮点数等数组.此外,JLS定义的Java语法禁止它,所以就是这样.


Boz*_*zho 5

boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
Run Code Online (Sandbox Code Playgroud)