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

2022-09-03 04:00:24

我尝试了这样的东西:


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

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


答案 1

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

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

顺便说一句,好的Java风格是将声明编写为:

int[] array = ...

编辑:为了记录,如此受限制的原因是其类型不明确。从理论上讲,它可以是整数,多头,浮点数等的数组。此外,JLS定义的Java语法禁止它,所以就是这样。{1, 2, 3}


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