2011-01-14 4 views
2

Javaで「配列型」をインポートすることはできますか?Javaでは配列型をインポートできますか?

がすることが可能です...私は、これは役に立たない輸入になります知っているが、我々は、明示的にjava.util.Stringjava.langが自動的にインポートされている)か、現在のコンパイル単位で定義されているとしても、クラスをインポートすることができますこのばかげた輸入をする?

+0

を改訂してください。 – Nishant

+1

あなたはこれを何と考えましたか? – CoolBeans

+0

好奇心のみ。 :) –

答えて

4

いいえ、アレイタイプはインポートできません。同じようにインポートすることはできませんintまたはdouble

1

配列は、言語によって定義されたプリミティブ型です。 int[] a = new int[5];を書くときに、実際に何をしているのかは、プリミティブint型を保持できる5つのメモリロケーションを設定することです。他の配列宣言に対しても同じことが起こります。つまり、javaからインポートすることはできません。

+0

プリミティブに言及するための+1。私は、最も基本的な型が 'Object'由来のバージョンを持っていると付け加えたいと思います。 ( 'int'と' Integer'についてはhttp://mindprod.com/jgloss/intvsinteger.htmlを参照してください)同様に、javaには 'ArrayList'、' LinkedList'、 –

+0

はい、Integer、Float、Doubleがあり、プリミティブ型の不変バージョンであり、オブジェクトが必要なテンプレートを持つコレクションを作成するため、ラッパークラスとしても使用されます。 ArrayListなど

0

とにかく、Javaには単一の配列型はありません。異なるエレメントタイプから作成された配列タイプは、それ自身で異なります。

あなたはこのコードをコンパイルしようとした場合には、これを見るために簡単です:

String [] stringArray = new String[4]; 
Object [] objectArray = new Object[4]; 
objectArray = stringArray; //This won't work even though individually every String can be cast to Object 
+0

あなたはそうです。 'List 'は 'List '(JLSのどこかに記述されているパラメータ化された型のプロパティ)とも互換性がないので、あなたの例から見ることはできません。しかし、 'objectArray.getClass()'は 'stringArray.getClass()'とは異なりますが、これはパラメータ化された型では起こりません。 –

+0

真実ですが、私はparameterezidクラスに言及してそれを複雑にしたくありませんでした。私が追加しなければならないのは、配列型を別の配列型にキャストすることさえできないということです。 – biziclop

0

それは不要です。タイプTが理解されると、T[], T[][], T[][][]...が自動的に理解されます。コンパイラとランタイムの両方に当てはまります。 有効Tをインポートすると、すべてT[]...がインポートされます。 Tがクラスローダーによってロードされると、すべてT[]...が同じクラスローダによってロードされます。

+0

私はそれが不必要であることを知っています。私はそれが可能かどうかを知りたかった**。しかし、そうではありません。 –

関連する問題