ParameterizedType的作用

ParameterizedType的作用

標籤: Gradle
16259人閱讀 評論(0)收藏舉報
分類:
我的學習歷程(44)


public interface ParameterizedType  extends Type


subParam.Java

  1. package com.example.test;  
  2.   
  3. public class subParam extends param<myclass, myinvoke> {  
  4.     public static void main(String[] args) throws Exception{  
  5.         subParam  s = new subParam();  
  6.     }  
  7. }  
package com.example.test;

public class subParam extends param<myclass, myinvoke> {
	public static void main(String[] args) throws Exception{
		subParam  s = new subParam();
	}
}

param.java

  1. package com.example.test;  
  2.   
  3. import java.lang.reflect.ParameterizedType;  
  4. import java.lang.reflect.Type;  
  5.   
  6. public class param<T1, T2> {  
  7.     class A {}  
  8.     class B extends A {}  
  9.       
  10.     private Class<T1> entityClass;  
  11.     protected param (){  
  12.         Type type = getClass().getGenericSuperclass();  
  13.         System.out.println("getClass()==" + getClass());  
  14.         System.out.println("type = " + type);  
  15.         Type trueType = ((ParameterizedType)type).getActualTypeArguments()[0];  
  16.         System.out.println("trueType1 = " + trueType);  
  17.         trueType = ((ParameterizedType)type).getActualTypeArguments()[1];  
  18.         System.out.println("trueType2 = " + trueType);  
  19.         this.entityClass = (Class<T1>)trueType;  
  20.           
  21.           
  22.         B t = new B();  
  23.         type = t.getClass().getGenericSuperclass();  
  24.       
  25.         System.out.println("B is A's super class :" + ((ParameterizedType)type).getActualTypeArguments().length);  
  26.     }  
  27.       
  28. }  
package com.example.test;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class param<T1, T2> {
	class A {}
	class B extends A {}
	
	private Class<T1> entityClass;
	protected param (){
		Type type = getClass().getGenericSuperclass();
		System.out.println("getClass()==" + getClass());
		System.out.println("type = " + type);
		Type trueType = ((ParameterizedType)type).getActualTypeArguments()[0];
		System.out.println("trueType1 = " + trueType);
		trueType = ((ParameterizedType)type).getActualTypeArguments()[1];
		System.out.println("trueType2 = " + trueType);
		this.entityClass = (Class<T1>)trueType;
		
		
		B t = new B();
		type = t.getClass().getGenericSuperclass();
	
		System.out.println("B is A's super class :" + ((ParameterizedType)type).getActualTypeArguments().length);
	}
	
}



===================== output =======================

getClass()==class com.example.test.subParam


type = com.example.test.param<com.example.test.myclass, com.example.test.myinvoke>


trueType1 = class com.example.test.myclass


trueType2 = class com.example.test.myinvoke


B is A's super class :0



總結

((ParameterizedType)type).getActualTypeArguments()

是用來的到類的模板參數的類型的? 入T1, T2  etc...


返回表示此類型實際類型參數的 Type 對象的數組。

7
4

猜你在找
機器學習之概率與統計推斷
機器學習之數學基礎
機器學習之凸優化
機器學習之矩陣
響應式佈局全新探索
探究Linux的總線、設備、驅動模型
深度學習基礎與TensorFlow實踐
深度學習之神經網絡原理與實戰技巧
前端開發在線峯會
TensorFlow實戰進階:手把手教你做圖像識別應用
查看評論

  暫無評論

發表評論
  • 用 戶 名:
  • NewstarCSDN
  •   
* 以上用戶言論只代表其個人觀點,不代表CSDN網站的觀點或立場
快速回復TOP
發佈了10 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章