当前位置: 首页 > news >正文

asp.net 旅游网站开发做网站应该注意些什么问题

asp.net 旅游网站开发,做网站应该注意些什么问题,只做健康产品的网站,辽宁和生活app下载安装前言 今天看群里小伙伴问了一个非常有意思的问题#xff1a; 使用 MapString,Object 对象接收前端传递的参数#xff0c;在后端取参时#xff0c;因为接口文档中明确该字段类型为 Long #xff0c;所以对接收的参数进行了强转#xff0c;即 (Long)参数 #xf…前言 今天看群里小伙伴问了一个非常有意思的问题 使用 MapString,Object 对象接收前端传递的参数在后端取参时因为接口文档中明确该字段类型为 Long 所以对接收的参数进行了强转即 (Long)参数 但是却发生了类型转换异常报错信息如下 class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader bootstrap)发现好几个小伙伴也有疑惑干脆直接码一篇文章解答一下希望对有此疑惑的小伙伴有所帮助。 Long 类型降级 我们先通过测试数据、测试方法来还原一下问题。 测试json数据如下 {user_name: niceyoo,age: -24,money: 2147483646 }测试test方法如下 PostMapping(/test) ResponseBody public void test(RequestBody MapString,Object params) {String userName (String) params.get(user_name);Integer age (Integer) params.get(age);Long money (Long) params.get(money);System.out.println(String.format(user_name%sage%smoney%s,userName,age,money)); }如上传递了三个参数即用户名、年龄、金额这三个字段如下是调用情况 通过截图下方断点参数可以看到接收的 age 、money 都是 Interger 类型而代码中 money 使用 Long 强转的话会报 java.lang.Long cannot be cast to java.lang.Integer 异常至此问题就还原出来了。 不懂就问为什么接收的 money 是 Integer 类型强转后会报错 首先我们先来看为什么接收的 money 是 Integer 类型。 使用 MapString,Object 接收的 Long 数值如果处于 「 Integer.MIN_VALUE ~ Integer.MAX_VALUE 」 是会自动转换成 Integer 的。 不光是接收同样直接使用 MapString,Object 存入数据符合这个范围仍然也会被认为存入的是 Integer 类型我们可以把它看做一种潜在的优化毕竟 Long 类型使用的字节数要大于 Integer 。 Integer.MAX_VALUEInteger 类型的最大值 Integer.MIN_VALUEInteger 类型的最小值 这两个值可以直接通过 sout 打印查看 System.out.println(Integer.MAX_VALUE) 2147483647System.out.println(Integer.MIN_VALUE) -2147483648 我们来验证一下将 money 的值改成大于 Integer.MAX_VALUE 同样的如果传递的值小于 -2147483648那么同样接收的类型为 Long大家可以验证一下。 为什么强转后会报错 强转的一些条件 低阶转高阶可以直接转高阶转低阶需要强制转换否则报错强转 null 值报错包装类型数据不支持直接跨类型强转 其实报错的原因就是这最后一条包装类型是不支持直接跨类型强转的比如你可以使用 Integer 跟 int 的直接转换但是你不能将 Integer 直接强转成 Long 类型或者 Long 类型强转 Integer 这样都是报错的。 如果不能确定接收的对象是 Long 还是 Integer 怎么办 既然知道不能强转了但是如果不知道接收的对象是什么类型怎么办 因为这种情况下你不知道接收的对象到底是超过 Integer 这个范围还是没有超过。 第一种解决方法就是对接收的对象进行类型判断。 主要就是使用关键字 — instanceof 如图所示我们可以先用 Object 接收一下对象然后对其通过 instanceof 关键字进行类型判断如果是 Integer 类型则先 .toString()然后再使用 Long.parseLong() 进行转换如果本身就是 Long则直接进行强转同理接收 Integer 类型也一样无非就是换用 Integer.parseInteger(). 第二种就是直接使用实体接收使用实体接收就不会存在此问题了。 博客园持续更新欢迎关注希望这篇文章对你有所帮助。 博客园https://www.cnblogs.com/niceyoo
http://www.yutouwan.com/news/316994/

相关文章:

  • 类似站酷的设计网站成为架构师有多难
  • 哪个网站开发是按月付费的ps网站建设要知道的知识
  • wordpress换logo福州优化广告公司
  • 舆情网站大全施工企业2024年市场开发工作思路
  • 如何建设和优化网站网站建设流程报告
  • 中国最好网站建设公司信用信息公示网官网
  • 什么是网站设计与建设建设虚拟币交易网站
  • 西安网站搭建公司公司网站标题优化
  • 企业管理网站厦门seo外包平台
  • 济南做网站优化哪家好wordpress.or
  • 山东省品牌建设促进会网站注册城乡规划师含金量
  • 做创业网站赚钱可以做外链的网站有哪些
  • 天津魔方网站建设建设工程施工证哪个网站查询
  • 怎样向网站上传照片电商网站话费充值怎么做
  • 案例上海网站百度开户怎么开
  • 中国纪检监察网站首页wordpress百度熊掌
  • 国外网站策划网站 微信开发
  • 企业如何做网站收款网页制作培训苏州
  • 杭州高瑞网站建设企业年报网上申报系统
  • 网站建设万禾西安关键词快速排名
  • 企业网站的作用想做个网站 在哪买域名和空间
  • 网站建设学习 服务器如何免费建购物网站
  • DW网站建设出现哪些问题建网站那种服务器好
  • 网站设计的意义做网站可以做什么
  • 网站建设制作公司景区网站模板
  • 大型门户网站建设效果好吗局域网内做网站
  • 网站流量查询站长之家企业网站推广的形式有哪些
  • 建微信网站南通做网站的公司
  • 广州网站建设培训班中文域名网站有哪些
  • 怎么增加网站的权重创办一个app需要多少钱