2010-12-29 6 views
0

誰かがコードを掲載:これは、変数型の定義とどのように違いますか?別の答えに

List<ISpeak> animalsThatTalk = new ArrayList<ISpeak>(); 

<>は何をしますか?

更新

私は私の第二の例では、私は混乱に起因する私の質問を言い換えてきました...コンパイルされないでしょう知っています。

+3

この2番目の例は、コンパイルには至りません。 – Falmarri

+1

何ですか?あなたがカッコで何をしようとしているのか分かりません。 –

+0

?私は2番目の例で構文を取得しません。 'List animalsThatTalk = new ArrayList ();'を意味するのではないでしょうか? – birryree

答えて

0

タイプパラメータには、角括弧(<...>)が使用されます。タイプを指定する必要があります(例: IntegerまたはStringです。値のパラメータには丸括弧が使用されています。 1または "Hello World"。

例:

new ArrayList<String>(3) 

これは、初期容量を持つ文字列の新しいリストを定義します3. Stringは型パラメータです。 3は値パラメータです。

0

これは言語の構文です...第2のものはJavaでは有効ではありませんが、Dのような言語ではほとんどコンパイルされますが、それは本当に正しいかどうかではありません。彼らは変数ではないので型引数をキャレットに入れることにしました。したがって、それらは普通の引数のようにはなりません。

+0

ほとんどVb.netにも! – asawyer

+0

はい、私はそれを忘れました。 :) – Mehrdad

1

あなたの質問は<> vs()の使用についてです。コレクションでは、通常、コレクションのパラメーターまたはタイプを指定する必要があります。これを行うには<>が使用されます。

だからあなたの例では、型ISpeakの一覧が

List<ISpeak> 

を作成しているあなたも、整数

List<Integer> 

<のリストを作成することができます>単にあなたはのタイプを定義することができますコレクションに含まれるオブジェクト。

第二の例

List (Speak) animalsThatTalk 

はコンパイルされません。コンパイラは、関数Listを引数Speakで呼び出そうとします。

+2

2番目はJavaでコンパイルされません。あなたはC#プログラマーですか? – BalusC

+0

確かに、私のJavaの友人のために修正されました。 –

+0

したがって、この例の 'List'が配列であるとすると、' List 'はその配列の値を整数として定義しますか? – Webnet

関連する問題