導航:首頁 > 編程語言 > java泛型class獲取

java泛型class獲取

發布時間:2024-02-28 11:05:38

java 如何獲取 泛型的 class

package com.leo.common;
public class Genericity<T> {
public static void main(String[] args) {
Genericity<String> test = new Genericity<>("test1");
System.out.println(test.getGenericityName());
Genericity<Double> test1 = new Genericity<>(new Double(123));
System.out.println(test1.getGenericityName());
}
private T data;
public Genericity(T data) {
this.data = data;
}
public T getData() {
return this.data;
}
public String getGenericityName() {
return data.getClass().getName();
}
}

Ⅱ java怎麼獲取帶泛型的介面中的泛型類

反射可以實現.
//獲得泛型集合
Type[] actualTypeArguments = class文件.getActualTypeArguments();
//實體類型
Class<T> domainClass = (Class<T>) actualTypeArguments[0];

Ⅲ java獲取泛型class

很多朋友都想知道java怎麼獲取泛型class?下面侍襲就一起來了解一下吧~
獲取泛型Class的方法
Class類的方法:
public Type getGenericSuperclass()
方法作用:

如果超類是參數化類型,則返回的 Type 對象必須准確反映源代碼中所使用的實際類型參數。如果以前未曾創建表示超類的參數化類型,則創建這個類型。有關參數化老做兄類型創建過程的語義,請參閱 ParameterizedType 聲明胡好。如果此 Class 表示 Object 類、介面、基本類型或 void,則返回 null。如果此對象表示一個數組類,則返回表示 Object 類的 Class 對象。

ParameterizedType類的方法:

Type[] getActualTypeArguments()

方法作用:返回表示此類型實際類型參數的 Type 對象的數組。

注意,在某些情況下,返回的數組為空。如果此類型表示嵌套在參數化類型中的非參數化類型,則會發生這種情況。

二、獲取泛型Class對象

(解析Excel的類代碼較多,這里定義幾個簡單的類記錄)

定義獲取泛型Class對象的工具類

GenericSuperclassUtil
import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericSuperclassUtil { /* * 獲取泛型類Class對象,不是泛型類則返回null */ public static Class  getActualTypeArgument(Class  clazz) { Class  entitiClass = null; Type genericSuperclass = clazz.getGenericSuperclass(); if (genericSuperclass instanceof ParameterizedType) { Type[] actualTypeArguments = ((ParameterizedType) genericSuperclass) .getActualTypeArguments(); if (actualTypeArguments != null && actualTypeArguments.length > 0) { entitiClass = (Class ) actualTypeArguments[0]; } } return entitiClass; } }
定義BaseService ,用來測試不使用父類時泛型Class的獲取

BaseService
public class BaseService  { public Class  getEntityClass() { return GenericSuperclassUtil.getActualTypeArgument(this.getClass()); } }
測試BaseService.getEntityClass() @Testpublic void testBaseService() { System.out.println(new BaseService ().getEntityClass());// 控制台輸出:null }

閱讀全文

與java泛型class獲取相關的資料

熱點內容
助眠解壓玩具電動 瀏覽:233
4k顯示器編程 瀏覽:265
什麼錯誤在編譯時會發現 瀏覽:698
學會自己解壓英語 瀏覽:42
安卓豪華版是什麼意思 瀏覽:682
c語言編程軟體打開 瀏覽:19
碧藍航線圖片文件夾位置 瀏覽:669
winme編譯 瀏覽:520
淘寶上買東西發順豐快遞地址都加密嗎 瀏覽:415
批處理編譯VS代碼 瀏覽:889
uchar哪個編譯器 瀏覽:27
initializejava 瀏覽:707
單片機的系統組成 瀏覽:610
中國天河二號演算法 瀏覽:647
程序員是怎麼瘋的 瀏覽:598
程序員的貓有幾條命 瀏覽:832
安卓如何把圖片傳到電腦上 瀏覽:895
到去哪兒旅行app怎麼買票 瀏覽:444
工商銀行app房貸還款在哪裡看 瀏覽:761
最新民生通訊app從哪裡下載 瀏覽:380