1. 程式人生 > >如何獲得當前類的欄位,方法引數泛型的型別

如何獲得當前類的欄位,方法引數泛型的型別

package com.zoo.thread; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.Date; import java.util.List; 問題:1,型別的泛型在執行時具體是什麼型別?             這個貌似反射不能獲得,只能獲得父類的泛型型別.         我想大概是,自己初始化型別的時候,具體的型別自己是知道的,         所以沒必要提供這樣的API. public class Generic<T>{     private List<Date> list;     public static void hello(List<Integer> list){     }     public static void main(String[] args) throws SecurityException, NoSuchFieldException, NoSuchMethodException {         //欄位泛型型別         Generic<String> ge = new Generic<String>();         Field f = ge.getClass().getDeclaredField("list");         Type type = f.getGenericType();         ParameterizedType pt  = (ParameterizedType)type;         System.out.println((Class<?>)pt.getActualTypeArguments()[0]);         //方法入參泛型型別         Method m = ge.getClass().getMethod("hello", List.class);         Type[] types = m.getGenericParameterTypes();         ParameterizedType ptt = (ParameterizedType)types[0];         System.out.println(ptt.getRawType());         System.out.println(ptt.getOwnerType());         System.out.println(ptt.getActualTypeArguments()[0]);     } }

相關推薦

如何獲得當前,方法引數型別

package com.zoo.thread; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.ref

引數,查詢的13個方法,但標的雙下劃線外來鍵和多對多操作

                欄位  常用欄位  AutoField() 自增列,必須填入引數 primary_key=True則成為資料庫的主鍵。無該欄位時,django自動建立 一個model不能有兩個AutoField欄位。 IntegerField() 一個整數

odi 11- Blob報ORA-00932 資料型別不一致: 應為 -, 但卻獲得 BLOB 解決方法

感謝外國友人的帖子,我在一老外回帖中看到一句話, " you need to use the IKM (PL/SLQ) to solve it... "  恍然大悟,忘記IKM 的問題,  核心是sql的問題。   立刻在‘流’面板,把點選選擇臨時區域,選擇IKM選擇為:

構造方法的初始化塊以及的初始化順序

構造方法 首先,以下程式碼為何無法通過編譯?哪兒出錯了? public class Test { public static void main(String[] a

再談怎樣以最簡單的方法為String的集合或String的數組轉化為逗號間隔字符串形式

集合 ret 類型 author sta rgs bsp lan ont 今天review代碼,看見某些大爺在將泛型為String類型的集合或String類型的數組轉化為逗號間隔字符串形式時仍然僅僅顧結果不註重過程,“大爺”咱能負點責任嗎?

c#中的自定義方法接口

泛型方法 return bsp 其中 tel sts code 方式 void ? 泛型的產生其中一個原因就是為了解決原來集合類中元素的裝箱和拆箱問題: 一、泛型類: /// <summary> /// 返回前臺的消息 /// &

方法中的方法是內部調用、PInvoke 或是在 COM 導入中定義的。

imp services != keys inter 解決 ade dex virt 泛型基類中引用Api函數定義時static extern,在子類中會提示: 未處理TypeLoadException 泛型方法或泛型類中的方法是內部調用、PInvoke 或是在 COM 導

Java 有關的初始化

例項程式碼 package text; public class MethodOverload { /** * @param args */ public static void main(String[] args) { I

大資料之scala(四) --- 模式匹配,變數宣告模式,樣例,偏函式,變,逆變,隱式轉換,隱式引數

一、模式匹配:當滿足case條件,就終止 ---------------------------------------------------------- 1.更好的switch var x = '9'; x match{ case

ORM基礎之及其引數介紹

一、外來鍵ForeignKey 1、欄位引數 1.to 設定要關聯的表 2.to_field 設定要關聯的表的欄位(一般不設定,預設使用主鍵id關聯) 3.related_name 反向操作時,使用的欄位名,用

$Django 聚合函式、分組查詢、F,Q查詢、orm以及引數

    一.聚合函式     from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #匯入     # .查詢圖書的總價,平均價,最大

轉換實體不一致

package com.integralShopService.mapping; import com.account.dto.WaterAccountDto; import com.integralShopService.dto.WaterAccountSearchDto; import co

MyBatis動態傳入表名,引數的解決辦法--用於分表--表名是動態的

MyBatis動態傳入表名,欄位名引數的解決辦法--用於分表--表名是動態的 一直在使用Mybatis這個ORM框架,都是使用mybatis裡的一些常用功能。今天在專案開發中有個業務是需要限制各個使用者對某些表裡的欄位查詢以及某些欄位是否顯示,如某張表的某些欄位不讓使用者查詢到。這種情況下,就需

Django 資料操作之引數

Field 點選這裡檢視Github,記得關注哦! 資料操作欄位與其引數 欄位 所有欄位型別: AutoField(Field) int 自增列,必須填入引數 primary_key=True BigAutoField(AutoField) bigint 自增

過程或函式“某一”需要引數,單位提供

錯誤型別 導致錯誤的程式碼如下: 出錯原因: 因為在編寫三層中的DAL中,新增時沒有加上賦值的過程: arr[0].Value = model.LoginName; arr[1].Value = mod

MyBatis動態傳入表名,引數

問題 Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your

jQuery easyui dataGrid 動態改變排序名,一般情況下,在使用的時候,我們會點選相應進行排序,這裡以JAVA為例,後端的實體有可能和資料庫的不一致; 如:實體中的

jQuery easyui dataGrid 動態改變排序欄位名,一般情況下,在使用的時候,我們會點選相應欄位進行排序,這裡以JAVA為例,後端的實體類欄位有可能和資料庫的欄位不一致; 如:實體類中的屬性為userName,前臺filed="userName"而資料庫的欄位

方法介面

泛型的幾種正確寫法:   |--List<String> list = new ArrayList<String>();  ----推薦使用的寫法   |--List<String> list = new ArrayList(); ---可以使用,但不推薦,是為了相容老版本

Mapreduce學習:mapper中的4個引數解析

先看程式碼 public class FlowCountMapper extends Mapper<LongWritable, Text, Text, FlowBean>{ } 1、LongWritable:表示worder傳入KEY的資料型別,預

django之常用引數

一,ORM欄位 AutoField:int自增列,必須填入引數 primary_key=True。當model中如果沒有自增列,則自動會建立一個列名為id的列。 IntegerField:一個整數型別,範圍在 -2147483648 to 2147483647。