2012-10-31 2 views
7

Javaを使用しています。 私は人々の時間を無駄にし、ここに投稿したくありませんでしたが、私のグーグル・スキルは私に失敗し、私は答えを見つけることができません。私はいくつかの供給コードを探していたし、彼らは、(参考のために私たちは二つの木に赤黒木から変換されている)Javaに関して<E> public static <E> void

public static <E> void printTree(TwoFourTree<E> tf) 

を使用しました。私が最初にこの問題に近づいたとき、私は代わりに、public static voidの初期メソッド宣言に含めて使用しません。しかし、私は問題に遭遇し、<E>の代わりに<Integer>の代わりに<E>がすべて私の問題を解決しました。

だから私の質問は、誰かが<E>

public static <E> void 
+1

これは一般的なタイプのパラメータです。 –

答えて

3

を作成することです。

なぜジェネリックスを使用したいですか?さて、以下は有用なシナリオの1つです。 "悪い昔"に戻ると、オブジェクトを扱えるようなクラスを作成したい場合、すべてのオブジェクトを宣言する必要があります。

public class MySuperList 
{ 
    public void Add(object a) { } 
} 

あなたは何型の安全性を得るないのでしかし、これは、吸う - あなたは次のようなコードを書くことができます。

// Your code 
MySuperList list = new MySuperList(); 
cars.Add(new Car("Ford Mondeo"));// Works 
cars.Add(new Fish("Herring")); // Works - which is a shame as a Fish is not a car! 

ジェネリック医薬品は、あなたのクラスを強く入力できるようにすることで、これを修正したが、一般的なやり方で。例:

public class MySuperList<T> 
{ 
    // Add method will only accept instances of type T. 
    public void Add(T a) { } 
} 

// Your code 
MySuperList<Cars> list = new MySuperList<Cars>(); 
cars.Add(new Car("Ford Mondeo"));// Works 
cars.Add(new Fish("Herring")); // Compile-time error. 
+1

技術的なことですが、メソッド名は一般に小文字で始まります。 – arshajii

+1

申し訳ありません - 私はC#プログラマーです;) –

0

にそれはジェネリックメソッドを作成しない、まさに私に説明してくださいすることができますされます。つまり、任意のタイプのオブジェクトを引数(この場合)として保持するTwoFourTreeを使用できます。あなたは、例えば、唯一のタイプListのオブジェクトを開催TwoFourTree Sを受け入れることを望んでいた場合にのみNumberオブジェクト(IntegerDoubleなどを)望んでいた場合、あなたは

public static <E extends List> void ... 

ような方法を定義します

あなたはそうするだろう

public static <E extends Number> void ... 

このような方法を作成するのが実際に便利な理由です。私は、あなたは、例えば、複数の型パラメータを使用して同じ操作を行うことができ、楽しみが終わっていないことを指摘しなければならない:

public static <T, S extends Number> void ... 

私はあなたがあなたの場合は、一般的な方法でthisチュートリアルを読んで、それが有益見つけるかもしれないと思います」もっと知りたい。

0

代わりの

public static Integer ... 
public static Double ... 
public static Long ... 

を書いて...

あなたがすべてこれはGenericsとして知られているJavaの機能であるジェネリックメソッド

public static <E> 
+2

「Integer void」メソッドを記述することはできません。IntegerまたはVoidが返される可能性があります。あなたの答えを編集または削除してください。 –

+0

何か愚かな初心者の間違い:それに気づいてくれてありがとう。 – elrado

関連する問題