2012-02-19 1 views
6

最初の<T>が次のJavaコード行でどのようなものであるかを知りたいと思います。私はジェネリックスに関するいくつかのチュートリアルを読んだが、例のどれもがメソッド名の前に2つのジェネリックを持っていない。ありがとう。Javaジェネリックのこの使用法の意味はなんですか?

public <T> Provider<T> scope(Key<T> key, Provider<T> unscoped); 
+0

はい、メソッドシグネチャのジェネリックも理解できません。 – MJM

答えて

13

最初<T>すなわち、それはメソッドがジェネリックであり、型パラメータTを有することを言い、実際の型パラメータの宣言です。

第2の<T>は、単にメソッドの戻り値の型の一部です。つまり、このメソッドはProvider<T>を返します。

最初の<T>が省略された場合、Tはタイプの認識された識別子/名前ではないため、戻りタイプProvider<T>は無効となります。 Tは、最初に<T>がそのように導入されたため、型として認識されます。

+0

まだ私は方法の署名の最初の利益を知らない。 – MJM

+0

したがって、メソッドが2つ以上の型パラメータ、たとえばT2を使用すると、このように見えますか? '公共プロバイダスコープ(キーキー、スコープを持たないプロバイダ何か);' 'それは公共プロバイダスコープ(キーキー、プロバイダ、スコープ外、T2の何か)のようになります –

+3

号;' –

関連する問題