public static <T> T methodName

3298 ワード

1、の意味


本来、Tは戻り値を表すものが1つあるのに、なぜもう1つあるのでしょうか.これはこの方法が汎用的な方法として宣言されることを示す.
しかし、同じ汎用メソッドなのに、なぜ次のgetNameメソッドは宣言しないのでしょうか.

public class Test1<T> {
     
    private T name;
    public T getName(T name){
     
        return name;
    }
    public static <T> void printA(T a){
     
        System.out.println(a);
    }

解釈:宣言したクラス(Test 1は宣言したクラス)に対して汎用メソッドを宣言する必要はなく、static付きメソッドではクラスの一部ではないので、宣言していないクラスに相当するので汎用メソッドとして宣言する必要がある.
Test 2のようなクラスは汎用メソッドを宣言する必要があります

public class Test2 {
     
    public <T> T test1(T A){
     
        System.out.println(A);
        System.out.println(A.getClass());
        return A;
    }
}

https://blog.csdn.net/q610376681/article/details/88542620