public <T> void get(List<T> list){
getA(T.class); //报错,不能调用T.class
} public void getA(Class<?> class){
}

如上代码,要调用getA()方法,必须传入一个Class类,使用泛型怎么传递这个Class类呢?

在java里泛型操作还是很麻烦的。
例如这种:

class Service<K, V> {
// 此处的K,V都可以获取
// 多个的时候也一样
} class StringService extends Service<String, Integer> {
}

但是你直接写在方法上的这种是没办法获取的。

public <T> void get(List<T> list){
getA(T.class); //报错,不能调用T.class
}

建议你改成如下方式:

public <E> E get(List<E> list, Class<E> clazz) {
getA(clazz);
return null;
} public <E> void get1(List<E> list, Class<E> clazz) {
getA(clazz);
} public void getA(Class<?> clazz) {
}

hibernate,fastjson等都是这么反射的,例如:

List<String> list = JSON.parseArray("['abc','xyz']", String.class);
User user = JSON.parseObject("{'name':'tom','age':23,'sex':0}", User.class);

怎么获取泛型T.class类?的更多相关文章

  1. Gson通过借助TypeToken获取泛型参数的类型的方法

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  2. java获取泛型信息

    总结一下java中获取与泛型相关的信息的知识,不如说是使用方法.网上也有很多类似的优秀文章,这里主要做一个知识的总结.通过反射获取泛型信息的常见例子: //bean package testProje ...

  3. C#工具:反射帮助类 泛型反射帮助类

    反射帮助类 using System; using System.Reflection; using System.Data; using System.Drawing; using System.R ...

  4. JAVA 注解,泛型,反射获取泛型,并实例化

    JAVA 的泛型加大了 编程的灵活性,在配合上反射,可以让我们省去大量的重复代码,当你用 SpringBoot 整合 JPA 的时候 你会发现,你的 DAO 层只需要继承 BaseDao,在显示标明泛 ...

  5. 获取泛型的class 反射

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  6. Gson通过借助TypeToken获取泛型参数的类型的方法(转)

    最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...

  7. 【C#】获取泛型<T>的真实类型

    需求:在包含泛型T的类或方法中,想要根据T的具体类型,进行相应的处理,需求伪代码如下: public void Test<T>() { if(T is string) { // do so ...

  8. 反射方式,获取出集合ArrayList类的class文件对象

    /* * 定义集合类,泛型String * 要求向集合中添加Integer类型 * * 反射方式,获取出集合ArrayList类的class文件对象 * 通过class文件对象,调用add方法 * * ...

  9. JAVA基础--JAVA 集合框架(泛型、file类)16

    一.集合总结 集合:Collection体系.Map体系. Collection体系:单列集合的共性操作规则. List:列表,可以重复,有下标,拥有特有的迭代器ListIterator. Array ...

随机推荐

  1. 4.24Linux(4)

    2019-4-24 21:35:13 学完了Linux装python编译安装感觉有种控制电脑的感觉!感觉好爽!!!! 主要是Linux用习惯就感觉好爽!!! 越努力,越幸运!永远不要高估自己!! 等学 ...

  2. Android Gradle Task

    Tasks runnable from root project ------------------------------------------------------------ Androi ...

  3. vue2.0 如何自定义组件(vue组件的封装)

    一.前言 之前的博客聊过 vue2.0和react的技术选型:聊过vue的axios封装和vuex使用.今天简单聊聊 vue 组件的封装. vue 的ui框架现在是很多的,但是鉴于移动设备的复杂性,兼 ...

  4. 样式布局与 BFC

    一.几类视图 内联视图:inline 单行 块级视图:block 换行,有高度 行内块级视图:inline-block 单行,有高度 二.几类布局 块级布局 换行,通过设置 margin 水平居中 & ...

  5. Spring源码学习相关记录

    Spring单例实现: protected Object getSingleton(String beanName, boolean allowEarlyReference) { Object sin ...

  6. [转]jenkins2 插件安装

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd Jenkins的安装包和插件在7个国家有20多个镜 ...

  7. Roslyn还出现这么低级的错误,不应该呀!

    前几天对Dora.Interception作了简单的重构,想提供C#脚本来定义Interception Policy,毫无疑问微软提供的编译平台Roslyn使C#脚本化提供了支持.但是没有想到随便尝试 ...

  8. 混合物App开发中,在移动设备上调试查看日志,重写window.console

    (function(){ var print={ lock:true, log:function(param){ if(this.lock){ var element=document.createE ...

  9. Python前世今生以及种类、安装环境

    一.Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为A ...

  10. Javascript高级编程学习笔记(1)—— JS简介

    此系列文章,用于记录所学,如有错误欢迎指出. Javascript组成 1.核心(ECMAScript) 2.文档对象模型(DOM) 3.浏览器对象模型(BOM) 1.核心(ECMAScript) E ...