質問

私はこのような何かを試してみました。


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}がそのように制限されていることの理由は、その型があいまいであるということです。理論的には、整数、long型、浮動小数点数、等の配列とすることができるほかに、それはその

であるので、JLSのは禁止それによって定義されるようにするJava文法

他のヒント

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

配列初期化子を指定することができます   宣言で、またはの一部として   配列生成式( 15.10 の)、アレイを作成し、いくつかの初期値を提供する

これの何のJava仕様(10.6)と言います。 (作成式で)「短い」バージョンのみ宣言(int[] a = {1,2,3};)で許可されているので、あなたは初期化子を使用したい場合は、他のすべてのケースでは、あなたは、new int[]{1,2,3}構造物を必要としています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top