Java基本数据类型的Class问题
问题发现:项目需求,在调用第三方接口时,规定请求报文体为XML,所以需要将实体Bean或POJO转成XML的形式,我使用了XStream来完成序列化转换,其中因为驼峰命名的字段名跟接口报文规定的字段有所出入或者说完全不同,如代码中字段名为posId,但接口中定为pos_id,所以调用XStram的api,alias方法或者@XStreamAlias注解,拿alias方法来说,有两个参数,别名(String)和所要别名字段的Class类对象,所以我要将整个Bean别名,传该Bean的Class即可,如:
xStreamForReqData.alias("business_trans", xmlData.getClass());
要将String的字段别名,传(String字段).class即可。但对于int或者其他基本类型的字段来说,本以为应该转不了的,因为认为基本类型没有Class,但事实发现是可以的,如下为对基本类型字段起别名
@XStreamAlias("pos_id")private int posId;
转化后的报文,结果说明可行。
<?xml version='1.0' encoding='GBK'?><business_trans><request_type>barcode_pay_request</request_type><isspid>000000</isspid><pos_id>0</pos_id><store_id>0000</store_id><pos_seq>00000</pos_seq><system_id>00000</system_id><barcode_pay_request><barcode_info>00000000000</barcode_info><tx_amt>1</tx_amt><goods_detail>{"goods_detail":[{"goods_name":"红烧肉","quantity":"1","price":1,"goods_id":"2018112910076000000050624008"}]}</goods_detail></barcode_pay_request>
</business_trans>
难道说基本类型也有Class对象?
证明:
查看JDK API的Class,发现文档中有说明,
“原始Java类型( boolean , byte , char , short , int , long , float和double ),和关键字void也表示为类对象。 ”
我们知道对于对象来说,可以直接使用对象.getClass()、Class.forName(className)或者类名.class都可以获取Class实例。
但是我们的基本数据类型,就没有类的权限定名,也没有getClass方法。
那么如何使用Class类来表示基本数据类型的Class实例?然后以Int为例,我查看了Integer的文档说明,发现有一个TYPE字段的说明
并查看Integer源码
/*** The {@code Class} instance representing the primitive type * {@code int}.** @since JDK1.1*/@SuppressWarnings("unchecked")public static final Class<Integer> TYPE = (Class<Integer>) Class
.getPrimitiveClass("int");
然后实践,我们int.classs是可以获取到它的Class实例的,然后经过测试,发现int的Class实例、Integer.TYPE和Integer.class三者之间的关系如下:
@Testpublic void test() {System.out.println("int.class == Integer.TYPE : " + (int.class == Integer.TYPE));System.out.println("int.class == Integer.class : " + (int.class == Integer.class));}
总结说明:
byte,short,int,long,char,float,double,boolean,void关键字
上述8种类型和void关键字,都有class属性.
表示int的Class对象: Class clz = int.class;
表示boolean的Class对象: Class clz = boolean.class;
表示void的Class对象:Class clz = void.class;
在基本数据类型的包装器中都有这样一个常量:TYPE,表示的是该包装器对应的基本数据类型的Class实例。
但同时需注意基本数据类型和其包装器类型是不同的。
Java基本数据类型的Class问题相关推荐
- 对Java基本数据类型的再思考
10年前,我开始学习Java,8种基本数据类型,感觉轻松入门,记忆毫不费力-- 10年后,面试时,突然有人问起java有哪几种基本数据类型?竟然答不出来了,脑子里一点概念都没有了. 为什么会这样? 看 ...
- java基本数据类型 以及 double float 二进制表示方法
Java 基本数据类型分为4类:整型,浮点型,字符型,布尔型. 整数类型: 关键字 占用字节数 byte 1 short 2 int 4 long 8 每个类型的取值范围,我们以int 为例,4个字节 ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- java i数据类型_数据类型 I
都来自菜鸟教程,自己总结学习使用, JS 数据类型 没有对比就没有伤害, 字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null ...
- Java 基本数据类型 sizeof 功能
Java基本数据类型 int 32bit short 16bit long 64bit byte 8bit char 16bit float 32bit double ...
- Java 基本数据类型
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
- 深入理解Java原始数据类型和包装类关于==和equals的比较
1.运算符 == 对于六大Java数值类原始数据类型,==比较的是数值 对于六大Java原始数据类型对应的包装类,==比较的是内存地址 2.equals() equals()方法只有对象才有,所以我们 ...
- java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
实验二 java基本数据类型与把持语句.doc 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 5System.out.println(num ...
- 五、吃掉Java基本数据类型,学习Java的基础
@Author:Runsen @Date:2020/5/20 Java是一个强类型语言,Java中的数据必须明确数据类型.在Java中的数据类型包括基本数据类型和引用数据类型两种. 我是天天看菜鸟和W ...
- Java技术分享:Java基本数据类型
数据类型在计算机语言里面,是对内存位置的一个抽象表达方式,可以理解为针对内存的一种抽象的表达方式.接触每种语言的时候,都会存在数据类型的认识,有复杂的.简单的,各种数据类型都需要在学习初期去了解,Ja ...
最新文章
- 【必备】VSCode开发Angular的必备插件
- 记录android老项目studio升级3.1+后重新配置gradle踩过的坑
- matlab 查看函数属性,matlab – 使用FFT属性查找2D函数的导数
- 卷及神经网络CNN for image retrieval
- [ solr入门 ] - 利用solrJ进行检索
- php书签源码,OneNav简约PHP导航书签源码
- Tarjan点的双联通(寻找割点)
- ANT HelloWorld
- 阵列信号处理知识概括总结
- MaxScript 冷门知识点
- Cox回归列线图(nomogram)的多种绘制方法
- 关于SCI、EI、CCF、DASFAA
- 扫描二维码下载app
- 安卓自动滑屏脚本_自动滑屏软件下载-自动滑屏 安卓版v3.1.0-PC6安卓网
- dr优先级默认_OSPF路由器不能成为DR/BDR唯一的方法:DR优先级=0
- 【Docker】docker日常工作总结(涉及基础命令、基础名词概念、镜像、容器、网络、数据卷)
- ZYNQ RFSoc开发板-usrp软件无线电X410mini开发板-5G评估板
- 《游戏学习》java代码实现《愤怒的小鸟》实战源码
- POJO、DO、DTO、AO、BO、VO、JB、DAO、EJB
- PID循迹机器人及整定
热门文章
- 软帝Java培训班第一周周记
- 风光储、风光储并网直流微电网simulink仿真模型。 系统有光伏发电系统、风力发电系统
- 行星万象表白墙微信小程序、社交微信小程序,后台完整,支持多区域运营,扫码体验。
- 鸿蒙分期怎么回事,这例乳腺癌的病理分期到底是啥?太纠结了!
- 魔兽3无法启动此程序因为计算机中丢失,windos10系统下war3无法启动的解决方法...
- Java中Set为什么不能存放重复值
- 修复损坏的zip文件
- java swing 窗口关闭事件_swing窗口关闭事件
- java 实现自动生成部署文档_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发......
- Android口袋天气系统一--整体架构