泛型——反射来获取泛型信息

原创 2018年04月16日 17:36:43

利用反射来获取泛型的类型(泛型信息)

步骤:

1.获取当前类

2.获取目标字段

3.获取包含泛型类型的类型 getGenericType()

4.强转至子类ParameterizedType  

5.获得泛型真正的类型 getActualTypeArguments()

package cn_itcast02;

import java.lang.reflect.Field;
import java.lang.reflect.Parameter;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;

public class Demo1 {
    Map<String, Integer> map = new HashMap<String, Integer>();

    public static void main(String[] args) throws NoSuchFieldException,
            SecurityException {
        Class c = Demo1.class;
        Field f = c.getDeclaredField("map");
        System.out.println(f);
        System.out.println(f.getName());
        Class c1=f.getType();
        System.out.println(c1);//获得其类型:interface java.util.Map
        Type t=f.getGenericType();//包含泛型的类型
        System.out.println(t);//java.util.Map<java.lang.String, java.lang.Integer>
        ParameterizedType pt=(ParameterizedType)t;
        t=pt.getRawType();
        System.out.println(t);//ParameterizedType
        Type[]ts=pt.getActualTypeArguments();
        for(Type type:ts){
            System.out.println(type);//class java.lang.String,class java.lang.Integer
        }       
    }
}


Java使用反射来获取成员变量泛型信息

Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰。获得了Field对象后,就可以很容易的获得该Field...
  • u011572579
  • u011572579
  • 2015-06-07 02:15:58
  • 1576

使用反射来获取泛型信息

通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰。获得了Field对象后,就可以很容易的获得该Field的数据类...
  • u013632755
  • u013632755
  • 2015-05-06 11:06:03
  • 387

Java使用反射来获取泛型信息

Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰。获得了Field对象后,就可以很容易的获得该Field...
  • a382064640
  • a382064640
  • 2014-05-18 17:53:15
  • 382

反射和泛型-反射来获取泛型信息

通过指定对应的 Class 对象,程序可以获得该类里面所有的 Field,不管该 Field 使用 private 方法 public。获得 Field 对象后都可以使用 getType()来获取其类...
  • in_summer_
  • in_summer_
  • 2018-04-03 11:59:50
  • 7

使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型

C#反射中的MakeGenericType函数可以用来指定泛型方法和泛型类的具体类型,方法如下面代码所示这里就不多讲了,详情看下面代码一切就清楚了: using System; usin...
  • u012329294
  • u012329294
  • 2017-08-27 09:32:44
  • 291

spring4 获取泛型信息

public interface TestService { public String test(); } @Service public class TestServiceIm...
  • sunhuwh
  • sunhuwh
  • 2015-05-18 00:23:11
  • 1512

泛型类获取泛型类型

1.再使用jdbcTemplate时有个query(sql, new RowMapper(){} )方法,返回实体对象列表; List list = jdbcTemplate.query(sql, ...
  • zhujianli1314
  • zhujianli1314
  • 2015-02-04 16:09:40
  • 2860

你不知道的泛型--获取具体的泛型参数类型

为什么擦除的泛型又可以获取具体的泛型参数信息, 在怎样的情况下可以获取? 这在哪些框架中使用到了?...
  • haoyifen
  • haoyifen
  • 2017-04-27 19:44:31
  • 1945

Java通过Class的对象来获取泛型的class示例

Java通过Class的对象来获取泛型的class示例
  • rzg813
  • rzg813
  • 2014-10-12 19:23:04
  • 3443
收藏助手
不良信息举报
您举报文章:泛型——反射来获取泛型信息
举报原因:
原因补充:

(最多只允许输入30个字)