2016-05-21 22 views
4

は、以下のコードを検討オブジェクトへ割り当てリテラル配列変数

In the Java programming language, arrays are objects (§4.3.1), are dynamically created, and may be assigned to variables of type Object (§4.3.2). All methods of class Object may be invoked on an array.

それ以外に、以下のスニペットは問題なくコンパイルされます:

Object [] arr = {}; 
Object obj = arr; 

質問:質問:最初のコードサンプルには何がないのですか。なぜ有効ではないのですか?

P.S:私はそれはとても基本的なようなので、誰かがすでに、この質問をしたことはほぼ確信しています。しかし、私はここでも、Googleで有用な結果を見つけることができませんでした(大括弧が検索で無視されるためかもしれません)。私が見逃した重複がある場合は、私の質問を終わらせてください。 記録については、以下の質問を確認しました。そのタイトルは有望に見えたが、それらはすべての問題の他の種類を扱った、または私の質問への答え含まれていませんでした:

答えて

0

インライン配列の初期化は配列型の宣言に使用することができます - それは、言語の構文の一部です。 Javaの8で

、このライン

Object o = {}; 

は、あなたが報告し、コンパイルエラーを与えるものではありません。代わりに、それは与える:

Array initializer not allowed here

配列初期化子がのみ配列の初期値として表示されます。

+0

@TimBiegeleisen:キャストで試みたが、いずれかの動作しません。 – Attilio

+1

あなたの声明の参考書はありますか? (これは私も疑うものですが、それを確認するための任意のソースを見つけることができませんでした。) – Attilio

+0

@Attilioでの疑問、Java言語仕様を参照してください。私はあなたがそこに答えを見つけることを確信しています。 – GhostCat

関連する問題