43_通过反射获得泛型的实际类型参数

简介: 框架经常干的事, 根据方法签名得知数据的类型,然后转换成相应的对象,填充进去。   package com.itcast.day2; import java.lang.reflect.

框架经常干的事,

根据方法签名得知数据的类型,然后转换成相应的对象,填充进去。

 

package com.itcast.day2;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.Vector;

import com.itcast.day1.ReflectPoint;

public class GenericExc {

    public static void main(String[] args) throws Exception{
        Method applyMethod=GenericExc.class.getMethod("applyVector", Vector.class);
        //Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
        Type[] types=applyMethod.getGenericParameterTypes();
        
        ParameterizedType pType= (ParameterizedType)types[0];//ParameterizedType是Type的子接口
        System.out.println(pType.getRawType());//得到原始类型
        System.out.println(pType.getActualTypeArguments()[0]);//得到实际类型
                
        //applyVector(Vector v)时, java.lang.Class 
        //applyVector(Vector<Date> v) sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
        System.out.println(types[0].getClass());
        
        //jdk1.8以后有了简便的方法直接得到了 java.util.Vector<java.util.Date>
        System.out.println(types[0].getTypeName());
    }

    public  void applyVector(Vector<Date> v){
        
    }

}
开始做,坚持做,重复做
相关文章
|
2月前
|
Java
|
8月前
|
存储 安全 Java
泛型的使用
泛型的使用
40 0
|
6月前
|
存储 算法 编译器
泛型的讲解
泛型的讲解
40 0
|
10月前
|
编译器 C#
C# 泛型
C# 泛型
40 0
|
11月前
|
存储 C#
【C#】什么是泛型?
泛型是C#编程中一个非常重要的概念,它能够编写更加通用、灵活和可重用的代码,能够编写可以在不同类型之间工作的代码,同时还可以提高代码的效率和可维护性。在本文中,我们将探讨泛型及其在C#编程中的应用。
67 0
|
12月前
|
存储 Java 编译器
对泛型的认识
对泛型的认识
|
Java
获取java泛型类中的泛型类型
实现java中获取泛型类中的泛型类型的方法
233 0
|
存储 Java 编译器
一文带你玩转“泛型“
一文带你玩转“泛型“
132 0
一文带你玩转“泛型“
|
安全 Java 编译器
java基础巩固-详解泛型
java泛型(generics)为jdk5引入的新特性,泛型提供了编译时类型安全检测机制,可以在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
1362 0