【发布时间】:2010-12-20 06:54:02
【问题描述】:
我试过这样的:
boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
但是这段代码甚至无法编译。
对此有什么解释吗? funkyBoolean ? {1,2,3} : {4,5,6} 不是一个有效的表达式吗?
提前谢谢!
【问题讨论】:
标签: java arrays ternary-operator
我试过这样的:
boolean funkyBoolean = true;
int array[] = funkyBoolean ? {1,2,3} : {4,5,6};
但是这段代码甚至无法编译。
对此有什么解释吗? funkyBoolean ? {1,2,3} : {4,5,6} 不是一个有效的表达式吗?
提前谢谢!
【问题讨论】:
标签: java arrays ternary-operator
boolean funkyBoolean = true;
int[] array = funkyBoolean ? new int[]{1,2,3} : new int[]{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 语法禁止它,所以就是这样。
【讨论】:
{1, 2, 3}(在其他情况下)看起来好像是一个集合,类型由目标类型确定(如泛型方法,例如 Arrays.asList)。