我尝试了类似于这样的东西:
boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
但是这段代码甚至无法编译。
这是为什么? funkyBoolean ? {1,2,3} : {4,5,6}
不是一个有效的表达式吗?
提前感谢!
我尝试了类似于这样的东西:
boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
但是这段代码甚至无法编译。
这是为什么? funkyBoolean ? {1,2,3} : {4,5,6}
不是一个有效的表达式吗?
提前感谢!
你只能在非常有限的情况下使用{1, 2, 3}
语法,而这并不是其中之一。请尝试以下方法:
int array[] = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
顺便提一下,良好的Java风格是将声明写成:
int[] array = ...
编辑说明:记录一下,{1, 2, 3}
被限制的原因是其类型不明确。理论上它可以是整数、长整数、浮点数等的数组。此外,按照JLS定义的Java语法是禁止这样做的。
boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{4,5,6};
{1, 2, 3}
(在其他情况下)将是一个集合,其类型由目标类型确定(例如泛型方法,如Arrays.asList
)。 - Tom Hawtin - tackline