精华内容
下载资源
问答
  • list泛型类型获取

    千次阅读 2015-10-23 11:43:00
    //myList的类型是List  Type type = field.getGenericType();  if (type instanceof ParameterizedType) {  ParameterizedType paramType = (ParameterizedType) type;  Type[] actualTypes = paramType....
    Field field = TestList.class.getDeclaredField("list"); //myList的类型是List 
    Type type = field.getGenericType(); 
    if (type instanceof ParameterizedType) {     
       ParameterizedType paramType = (ParameterizedType) type;     
       Type[] actualTypes = paramType.getActualTypeArguments();     
       for (Type aType : actualTypes) {         
           if (aType instanceof Class) {         
               Class clz = (Class) aType;             
               System.out.println(clz.getName()); //输出java.lang.String         
           }     
       } 

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    转载于:https://my.oschina.net/joeytai/blog/521146

    展开全文
  • 泛型类获取泛型类型

    千次阅读 2015-02-04 16:09:40
    再测试过程中,不能从当前类中直接或得当前类的泛型,而是获得了父类的泛型,从而通过继承来获得自己的泛型类,因为继承的父类已经确定了泛型类型了,从当前类中获取泛型类型的方法没有找到,不知道跟java泛型擦除有...

    1.再使用jdbcTemplate时有个query(sql, new RowMapper<User>(){} )方法,返回实体对象列表;

    List<User> list = jdbcTemplate.query(sql, new RowMapper<User>() {
    			List<User> users = new ArrayList<User>();
    			public User mapRow(ResultSet rs, int rowNum) throws SQLException {
    				User user = new User();
    				user = new User();
    				user.setName(rs.getString("name"));
    				user.setSex(rs.getString("sex"));
    				return user;
    			}
    		});

    想到这样会有很多重复代码,看到spring提供了

    List<User> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(User.class));
    但其要求数据库字段和实体类字段要完全一致;

    想要数据库字段和实体类字段不同的话,可以用注解去注释数据库字段,通过反射获取所有注解。

    自己写泛型的RowMapper借口实现类,获得泛型方法的泛型是关键步骤,得到泛型类型才可以通过反射得到想要的实体类

    小例子:

    package zjl.reflect;
    
    
    /**
     * 反射Test
     * 
     * @author zjl
     *
     */
    public class ReflectPoint<T> {
    	
    	private Class clazz;
    	
    	
    	
    	public ReflectPoint() {
    		ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
    		this.clazz = (Class) type.getActualTypeArguments()[0];
    		System.out.println("TYPE 为:"+clazz.getSimpleName());
    		System.out.println(clazz);
    	}
    	public void printType(){
    		//System.out.println(this.getClass().getTypeParameters()[0]);
    		System.out.println("TYPE 是-》"+clazz.getSimpleName());
    		
    	}
    	
    	
    }

    实现类:

    package zjl.reflect;
    
    public class BasePoint extends ReflectPoint<Student>{
    
    }
    

    测试类:

    package zjl.reflect;
    
    
    /**
     * 
     * @author zjl
     *
     */
    public class ReflectTest {
    	
    	public static void main(String[] args) throws Exception{
    		
    		BasePoint bp =  new BasePoint();
    		bp.printType();
    		
    	}
    }
    再测试过程中,不能从当前类中直接或得当前类的泛型,而是获得了父类的泛型,从而通过继承来获得自己的泛型类,因为继承的父类已经确定了泛型类型了,从当前类中获取泛型类型的方法没有找到,不知道跟java泛型擦除有没有关,有知道的请告知

    展开全文
  • I have;List stringList = new ArrayList();List integerList = new ArrayList();Is there a (easy) way to retrieve the generic type of the list?解决方案If those are actually fields of a certain class, then...

    I have;

    List stringList = new ArrayList();

    List integerList = new ArrayList();

    Is there a (easy) way to retrieve the generic type of the list?

    解决方案

    If those are actually fields of a certain class, then you can get them with a little help of reflection:

    package test;

    import java.lang.reflect.Field;

    import java.lang.reflect.ParameterizedType;

    import java.util.ArrayList;

    import java.util.List;

    public class Test {

    List stringList = new ArrayList();

    List integerList = new ArrayList();

    public static void main(String... args) throws Exception {

    Field stringListField = Test.class.getDeclaredField("stringList");

    ParameterizedType stringListType = (ParameterizedType) stringListField.getGenericType();

    Class> stringListClass = (Class>) stringListType.getActualTypeArguments()[0];

    System.out.println(stringListClass); // class java.lang.String.

    Field integerListField = Test.class.getDeclaredField("integerList");

    ParameterizedType integerListType = (ParameterizedType) integerListField.getGenericType();

    Class> integerListClass = (Class>) integerListType.getActualTypeArguments()[0];

    System.out.println(integerListClass); // class java.lang.Integer.

    }

    }

    You can also do that for parameter types and return type of methods.

    But if they're inside the same scope of the class/method where you need to know about them, then there's no point of knowing them, because you already have declared them yourself.

    展开全文
  • Java如何获取泛型类型

    2021-01-21 17:09:27
    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...
  • 获取泛型类型

    2017-06-07 00:01:30
    获取泛型类型 public abstract class AbstractRepository<T> { private Class<T> getClazz() { return (Class<T>)((ParameterizedType) getClass().getGene...

    获取泛型类型

    public abstract class AbstractRepository<T> {
        private Class<T> getClazz() {
            return  (Class<T>)((ParameterizedType) getClass().getGenericSuperclass())
                    .getActualTypeArguments()[0];
        }
    }

    说明

    • getGenricSuperclass() 需要有子类

    • getActualTypeArguments()[0],只是取到第一个泛型的类型

    • getGenericInterfaces() 可以取接口的泛型

    展开全文
  • java获取泛型类型

    2017-06-22 13:48:00
    java获取泛型类型 泛型是自java1.5以后引入的概念,主要为了弥补java语言强类型特性带来的编程上的不便。 泛型的本质是一种参数化类型,对应的java中的类ParameterizedType.java所以,要获取运行时的...
  • 获取接口的泛型类型

    2015-11-09 16:19:34
    /* 获取接口的泛型类型 / public static Class
  • 泛型类型获取 文章摘自https://blog.csdn.net/qq_27070117/article/details/103069308 clazz.getTypeParameters() 如上代码,我给类TV声明了两个泛型V和T,而通过getTypeParameters()获取到的数组正代表类头部声明的...
  • 通过反射获取泛型T的class对象方法 泛型父类需要获取其子类定义的泛型类型
  • Java获取父类泛型类型

    千次阅读 2020-05-31 10:33:26
    为什么要获取父类的泛型类型? 在我们看Spring源码时,通过判断父类的泛型类型,监听器是哪种监听类型,通过以下方式可以获取到监听的类型 创建一个Person的父类,泛型类型为String,用于子类继承 package ...
  • 获取父类的泛型类型

    千次阅读 2014-10-02 21:19:27
    import java.lang.reflect.ParameterizedType; public class GenericClass ... * 获取父类的泛型类型 */ public static Class getGenericClass(Class clazz) { ParameterizedType type=(ParameterizedType)clazz
  • 完美获取泛型类型(包含嵌套多层的泛型) 1. 工具类 2. 使用方法
  • Java反射获取泛型类型

    千次阅读 2015-10-17 12:58:13
    Java反射获取泛型类型  在Java反射技术的应用中,取得一个类的成员、方法和构造函数相对比较容易,但是要想取得其中包含的泛型类型则相对困难一些。先看一个简单的例子,然后详细说明每个步骤的作用。 public class...
  • 最近正好使用到了Guava...比如,泛型父类需要获取其子类定义的泛型类型时: public abstract class GenericClazz<V> { private Class<V> classType; public void doSth() { final TypeT...
  • * 获取 实体类泛型的真实类型,可以为null * @return */ public Class<T> getIdKey() { ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass(); Class<...
  • Java 获取泛型类型 当我们需要将 Json 字符串反序列化为对象时,往往会需要使用到泛型 场景 假设我们定义了一个类,内部有一个数据结构,泛型为 T,当我们输入一个 Json 字符串,想把这个 Json 反序列化成对象,...
  • 有的框架如mybatis和spring都需要反射获取类型,以使得序列化和反序列化得以实现,但有时候我们根据项目的需要获取这些具体类型。 比如,mybatis orm环境下,数据库字段类型和java类型不匹配检测的功能,需要利用...
  • Java获取类或接口上的泛型类型T方法

    万次阅读 2019-09-19 16:03:41
    获取类或接口上的泛型类型Class<?>,然后对这个类型进行数据处理,至于怎么处理,还要看实际的应用场景。本篇讲述如何获取类或接口的泛型类型(参数化类型ParameterizedType)。 实例 1.定义泛型接口 public...
  • 获取父类泛型类型步骤: 1 获取当前类的父类类型,即为参数化类型   Type type=this().getGenericSuperClass(); 2 将Type接口转换为ParameterizedType类型 ParameterizedType pm=(ParameterizedType) type; ...
  • public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T>...//用于接收运行期泛型类型 public BaseDaoImpl(){ //获得当前类型的带有泛型类型的父类 ...
  • C#泛型函数获取T类型名称

    千次阅读 2019-07-06 13:11:02
    C#泛型函数获取T类型名称 XXX.CreateDAL<IDAL.SqlHelper>();//这里调用下面的泛型函数publicstaticTCreateDAL<T>(){//这里怎么获取T的类型字符串,得到SqlHelper或者IDAL.SqlHelper}...展开 您好. 您...
  • public abstract class BaseDao ... //通过带有泛型类型的父类获取实体类型 public BaseDao(){ //给clazz赋值:需要知道操作的是哪个实体类,从而知道操作那张表 Type type = this.getClass().getGenericSupercl
  • java 获取 泛型类型(接口及超类)

    千次阅读 2019-01-20 17:46:35
    java 获取 泛型类型(接口及超类)
  • 获取具体的泛型类型

    2019-09-15 12:58:16
    //获取泛型信息 public class GenericTest { @SuppressWarnings("unused") private Map<String,Integer> score; @SuppressWarnings("unused...
  • // 这里定义了一个泛型R,那运行时如何获取到这个类型呢? // 第一眼看上去,你会感觉,这不是很简单吗? // 在onSuccess的方法中参数就能读取到具体类型啊 // 问题的关键就是调用onSuccess前,如何创建R类型的参数 ...
  • Java 反射 -- 获取泛型类型 先写一个类: public class Demo03 { public void test01(Map<String, User> map, List<User> list) { System.out.println("Demo03.test01()"); } public Map<...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 125,830
精华内容 50,332
关键字:

泛型类型获取