回覆列表
  • 1 # 滴逃逃

    package test;

    import java.util.ArrayList;

    import java.util.List;

    public class Test01 {

    public static void main(String[] args) {

    List<String> strings = new ArrayList<String>();

    strings.add("123");//模擬返回一個泛型

    System.out.println(strings.getClass());//第一次取型別

    System.out.println(strings.get(0).getClass());//假如透過第一步知道是ArrayList型別,則再取型別

    }

    }

    輸出結果:

    class java.util.ArrayList

    class java.lang.String

    這裡只舉例講一下方法,不知道是不是你想要的,

  • 2 # jimware

    ParameterizedType pt =(ParameterizedType)this.getClass().getGenericSuperclass();Class<T> entityClass =(Class<T>)pt.getActualTypeArguments()[0];entityClass就是實際型別。

  • 3 # 但求無Bug

    我認為,如果在方法內部獲取還是可行的,但如果希望透過一個方法來獲取一個泛型方法的真實泛型型別,那應該是實現不了。

    首先Java中的泛型,也叫引數化型別,沒記錯泛型應該是jdk5引入的特性,泛型目的在於使資料型別可以作為引數傳入,從而可以動態的改變某個變數的資料型別。

    那麼什麼是泛型方法呢?就是泛型型別是宣告在方法上,只有當呼叫該方法時才會將真實型別傳入。如果你是在方法內部獲取那直接呼叫泛型物件的getClass方法即可。但如果希望透過一方法來獲取某個泛型方法的真實型別,我認為沒法實現。因為未呼叫方法時,真實的資料型別還未入,所以根本無法取到泛型對應的真實型別。

    所以下面我就說說如何在泛型方法內部獲取泛型的真實型別。

    老規矩,咱寫段程式碼再來解釋。泛型方法的例子如下圖:

    在上圖中,我聲明瞭一個泛型方法:findFirst, 用於獲取陣列的第一個元素。

    執行結果如下圖:

  • 中秋節和大豐收的關聯?
  • 為什麼長江和漢江的水不會融合在一起呢?