获取泛型T的ClassT clazz

在我们搭建框架中往往会用到泛型,我们知道泛型的好处是编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,代码的重用率高 

然而有时候<method>的入参并不能直接强制转换成泛型的类型,比如说下面这段代码: 
这里写图片描述 
很明显String 类型不能强制转换成<T> 
那我们会需要用到FastJson或者GSON这种类型转换工具进行类型的转换工作 
但FastJson和Gson 内方法是这样的:

public static <T> T parseObject(String text, Class<T> clazz) {return parseObject(text, clazz, new Feature[0]);}
  • 1
  • 2
  • 3

Class<T> clazz 是显式的类型。 直接使用的话会报错: 
这里写图片描述 
不能直接使用<T>,那么我们需要获取到<T>Class<T> clazz; 
下面是获取泛型<T>Class<T> clazz两种方法:

  • 一种是使用反射类reflect
   Class<? super T> rawType;rawType = (Class <T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
  • 1
  • 2

getActualTypeArguments()[0]中 ‘0’ 代表的是第一个泛型类型。

  • 第二种采用Gson来获取
Class<? super T> rawType;public BaseCallback() {this.mType = getSuperclassTypeParameter(getClass());this.rawType = (Class<? super T>) $Gson$Types.getRawType(mType);}static Type getSuperclassTypeParameter(Class<?> subclass) {Type superclass = subclass.getGenericSuperclass();if (superclass instanceof Class) {throw new RuntimeException("Missing type parameter.");}ParameterizedType parameterized = (ParameterizedType) superclass;return $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Class<? super T> rawType就是我们泛型<T>的数据类型Class<T> clazz 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

写给大数据开发初学者的话5

见&#xff1a;http://lxw1234.com/archives/2017/01/832.htm 至此&#xff0c;你的大数据平台底层架构已经成型了&#xff0c;其中包括了数据采集、数据存储与计算&#xff08;离线和实时&#xff09;、数据同步、任务调度与监控这几大模块。接下来是时候考虑如何更好的对外提…

3.spring boot Controller获取请求参数的值

2019独角兽企业重金招聘Python工程师标准>>> 1.获取连接中的参数,使用倒的关键词PathVariable RestController public class HelloController {RequestMapping(value "/hello/{id}",method RequestMethod.GET)public String index(PathVariable("i…

登录与注册

代码如下 private void btn_login_Click(object sender, EventArgs e){SqlConnection sqlconnection new SqlConnection();sqlconnection.ConnectionString ConfigurationManager.ConnectionStrings["SQL"].ConnectionString;SqlCommand sqlcommand new SqlComman…

三分钟明白 Activiti工作流 -- java运用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、 什么是工作流 以请假为例&#xff0c;现在大多数公司的请假流程是这样的 员工打电话&#xff08;或网聊&#xff09;向上级提出请…

vue-i18n使用及踩坑记录

使用步骤 1. 安装 npm i vue-i18n 2. vue-cli下使用 //1. 引入 vue-i18n import Vue from vue import VueI18n from vue-i18n Vue.use(VueI18n)//2. 定义messages const messages {en: {text: {hello: hello world}},zh: {text: {hello: 你好、世界}} }//如果messages字段很多…

idea搭建web项目及tomcat部署总结

该文章为引用文章&#xff0c;原地址为&#xff1a;https://www.cnblogs.com/shindo/p/7272646.html 后面有我自己搭建过程中遇到的问题及解决方案&#xff0c;请参考。 一、创建简单web项目 1、创建一个web project File -> new Project ->选择project sdk 为1.6&#x…

Activiti工作流框架学习(一)环境的搭建和数据表的了解

一、什么是工作流 工作流(Workflow)&#xff0c;就是“业务过程的部分或整体在计算机应用环境下的自动化”&#xff0c;它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行&#xff0c;从而实现某个预期的业务目标&#xff0c;或者促使…

基础、语法都不是最重要的,学Python最重要的是什么?编程思路!

论述 一些朋友自学python过程中&#xff0c;发现书也能看懂&#xff0c;书上的玩具代码也能看懂&#xff0c;但为啥自己不能做习题&#xff0c;不能写代码解决问题&#xff0c;自己不能动手写代码&#xff1f; 原因 初学者没有学会计算思维、解决问题的方法、编程思路。编程思路…

Activiti工作流引擎的使用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Activiti工作流引擎使用 1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科&#xff1a;工作流引擎 1.1 我与工作流引…

Flurry调查报告:图片和视频应用增长速度最快

据外国媒体报道&#xff0c;移动数据分析公司Flurry近期对应用分类的欢迎度进行研究后发现&#xff0c;就用户使用的时间而言&#xff0c;“图片和视频”应用已成为增长最快的移动应用。 Flurry对各种应用分类的800多万移动用户进行了调查&#xff0c;并利用其分析工具跟踪了1…

12-思科防火墙:ASA会话超时

一、实验拓扑&#xff1a;二、实验要求&#xff1a;DCD&#xff1a;死亡检测时间&#xff0c;默认R2 Telnet上去保持时间为1个小时&#xff0c;超时就会被清除掉&#xff0c;这里要求变为4小时&#xff0c;每15s就会发送5个DCD检测包&#xff0c;如没回应就剔除掉&#xff0c;回…

orCAD使用Orcad Capture CIS按Room摆放

http://www.sig007.com/EDAguide/176.html 37 使用Orcad Capture CIS按Room摆放 &#xff08;1&#xff09;打开原理图某一工程页 &#xff08;2&#xff09;按Ctrl键依次选中需要建Room的元件&#xff0c;右击&#xff0c;选择Edit Properties 在Filter by 下拉菜单中选择Cad…

细数25个硅谷最热创业公司 寻找创业灵感

【CSDN编译报道】硅谷堪称高科技产业之乡&#xff0c;每当提起就能联想到影响全球产业的各大著名企业Mircosoft、Google、Adobe、Oracle、Yahoo、SAP、intel等。而硅谷也被誉为创业公司的天堂&#xff0c;多如繁星的初创公司Karma、99Dresses、Getaround、Omada Health、Social…

数据特征分析:2.对比分析

对比分析 两个相互联系的数&#xff08;指标&#xff09;进行比较&#xff08;绝对数比较、相对数比较&#xff09; 对比分析 对比分析 → 两个互相联系的指标进行比较 绝对数比较&#xff08;相减&#xff09; / 相对数比较&#xff08;相除&#xff09;结构分析、比例分析、…

[Educational Round 5][Codeforces 616F. Expensive Strings]

这题调得我心疲力竭...Educational Round 5就过一段时间再发了_(:з」∠)_ 先后找了三份AC代码对拍&#xff0c;结果有两份都会在某些数据上出点问题...这场的数据有点水啊_(:з」∠)_【然而卡掉本弱还是轻轻松松的】 题目链接&#xff1a;616F - Expensive Strings 题目大意&a…

周鸿祎回顾IPO一周年:保持创业心态 看好无线

奇虎360董事长兼CEO周鸿祎 3月19日晚间消息&#xff0c;在奇虎360上市接近一周年之际&#xff0c;奇虎360董事长兼CEO周鸿祎与媒体及个人投资者进行沟通&#xff0c;他表示这一年压力比以前更大&#xff0c;因为在上市光环下依然需要保持创业心态&#xff0c;同时他强调无线和…

创业必经之路——Paul Graham创业曲线

导读&#xff1a;国外媒体avc.com近日发表一篇文章《The Startup Curve》&#xff0c;文中谈到创业者都处于Paul Graham创业曲线中各个阶段&#xff0c;不要一味的畏惧失败&#xff0c;要多倾听客户反馈并从中寻找制胜的信息。总而言之&#xff0c;不畏艰难即可成功。以下为文章…

Java:对象的强、软、弱和虚引用

见&#xff1a;http://zhangjunhd.blog.51cto.com/113473/53092 maven/Java/web/bootstrap/dataTable/app开发QQ群&#xff1a;566862629。希望更多人一起帮助我学习。 1&#xff0e;对象的强、软、弱和虚引用在JDK 1.2以前的版本中&#xff0c;若一个对象不被任何变量引用&am…

聊聊3种最常见的响应式设计问题

响应式设计方法对开发者非常有用&#xff0c;因为它使我们的内容在各种设备上广为传播。不用保留几个独立版本的网站&#xff0c;也可以摒除诸如缩放和流式布局这些方法的弊端。 缩放、流式布局与响应式 这些术语容易造成混淆&#xff0c;设计师常常错误地交替互用。实际上&…

帕累托分布(Pareto distributions)、马太效应

什么是帕累托分布 帕累托分布是以意大利经济学家维弗雷多帕雷托命名的。 是从大量真实世界的现象中发现的幂次定律分布。这个分布在经济学以外&#xff0c;也被称为布拉德福分布。 帕累托因对意大利20%的人口拥有80%的财产的观察而著名&#xff0c;后来被约瑟夫朱兰和其他人概括…