次のコードは私にとって非常に混乱しています。クラスの静的メンバーのジェネリックとの混乱
public class Test<T> {
public static <T> Test<T> ok(T result) {
..
私はクラス名でジェネリックスを理解しています。 「OK」メソッドは、この
public static Test<T> ok(T result) {
またはこの
public static T ok(T result) {
しかし、なぜ、余分な< T>は、私は理解していないテスト< T>戻り値の型の前に存在しているようなものだ場合、私は理解できます。
返り値または戻り値が "2"の場合は、を返します。その前に余分にが含まれています。なぜなら、Tが返されたのは、<>がなく、テストがなければTではないからです。 –
luky
コンパイラーは一般的な型を持っているので、そこにあります。他のTsはそれを通常の形で満たすためのものです。 – LenglBoy
重要なものであることの前に ''クラス宣言内の1つ( 'クラスTest ')より_異なる_ Tがok'。どちらも同じ名前を持っていますが、2つの全く異なる型パラメータがあります。クラス宣言からのものはインスタンスメソッドでのみ利用可能で、 'ok'のものはそこでのみ利用可能です。 ( 'T result'は' Test 'ではなく' ok'に対して宣言されたものを使用します)。 –
yshavit