導航:首頁 > 編程語言 > 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獲取相關的資料

熱點內容
計算機pdf下載 瀏覽:571
sp源碼怎麼編輯修改 瀏覽:832
程序員男票怎麼樣 瀏覽:609
程序員招聘追求什麼 瀏覽:410
tracert命令的使用 瀏覽:983
金蜘蛛的指標源碼 瀏覽:880
探探資源網站源碼 瀏覽:942
php調用webserver 瀏覽:237
程序員配聽診器 瀏覽:76
程序員免費連wifi 瀏覽:494
王者榮耀今天怎麼伺服器更新了 瀏覽:153
單片機拼搭 瀏覽:153
程序員沒必要穿沖鋒衣 瀏覽:409
nova隱藏app怎麼用 瀏覽:680
單片機程序中ret 瀏覽:225
愛奇藝上海演算法團隊 瀏覽:140
程序員顏值高的人 瀏覽:364
西數硬體加密和閃迪軟體加密 瀏覽:718
聲控足球解壓黏土教程 瀏覽:641
linux下的嵌入式開發 瀏覽:175