2011-01-10 18 views
6

私はいくつかのサンプルコードを働いていると、これが登場:Java - <used>とは何ですか?その名前は何ですか?

public abstract class RandomPool<T> extends Pool { 
    //Class... 
} 

に使用<>何?そして、なぜこれらの中にちょうどTがあるのですか?これは私にとって非常にランダムなようです。しかし、どのようにプログラムを作成するというより長い視点でそれを使うことができますか?

ありがとうございます。詳細を追加する必要がある場合は教えてください。

+0

皆様お返事ありがとうございます!私はJava Genericsのドキュメントを読んで、すべてを理解していることを確認します。次に、ドキュメントからの私の理解に基づいて最も記述的な答えを受け入れます。 – Curtain

答えて

10

これは、あなたのクラスが受け入れるジェネリックの型を宣言する方法である。

+0

ちょうどTである必要がありますか、または私が望むように任意の手紙を使用できますか? – Curtain

+2

任意の文字または単語。それは単なるマーカーです。 –

1

Tは「タイプ」の略でJava Generics

を参照してください。あなたが提示された例は、読み取ります。タイプTの

抽象クラスObjectPoolはプール

3

ジェネリック

Tを拡張して、実行時に使用されているものの種類のプレースホルダです。たとえば、あなたが使用できます。

RandomPool<String> pool; 

Tは、その場合にはStringを参照することになります。

Java Generics Tutorial

1

非常に短い降順Tは、コンパイラの変数であるお読みください。あなたのコードを投稿すると、例えば、RandomPool<String>、FooのrandomPool、eg: RandomPoo<Foo>などのStringPoolを持つことができます。事が型パラメータと呼ばれているこの心の中で

3

読み取りDOMのファーのリンク。

基本的に、クラスRandomPoolは汎用クラスです。呼び出し側が提供するさまざまなクラスを使用できるように型パラメーターがあります。 ListなどのJavaコレクションを参照すると、はるかに明確になります。

また、Tはキーワードではありません。あなたが好きなようにタイプパラメータに名前を付けることができます。 Tのようなタイプを使うのは単なる慣習です。一部のコレクションでは、EのようなEを使用します。

1

これはテンプレートを実装するためのJavaの方法です(C++で)。 Tは、インスタンス化された特定のオブジェクトに使用する要素の型を表します。あなたは簡単にこの例を見てジェネリック理解することができます

:ここ

Hashmap <String, int> hm = new HashMap<String,int>(); 
hm.put("k1",1); 
hm.put("k2",2); 

Iterator it = hm.iterator(); 

while (it.hasNext()){ 
    String curr = it.next(); 
    int value = hm.get(curr); 
} 

を、あなたはハッシュマップは、あなたが先住民からカスタムクラスなどに..あなたが望むものは何でも使用できる2種類(一般的なタイプを、かかることを理解することができます等)。 投稿した例のRandomPoolは、特定のカスタムタイプでインスタンス化する必要があります。したがって、コードを使用する場合は、次のようにコードを記述する必要があります。

RandomPool<String> myR = new RandomPool<String>(); 
1

これについては何も面白いことはありません。ランク1パラメトリック多形性のJavaの構文です。

関連する問題