热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

线上问题:JavaBean赋值基础类型抛出异常

1问题复现1.1问题实体(JavaBean规范)赋值时,抛出异常。1.2原因使用基础类型定义属性,当使用null给属
1 问题复现

1.1 问题

实体(JavaBean规范)赋值时,抛出异常。

1.2 原因

使用基础类型定义属性,当使用null给属性赋值时,抛出异常。

2 Java Bean

package com.monkey.java_study.common.entity;/*** 数字实体:测试基础类型和包装类型.** @author xindaqi* @date 2021-11-08 17:32*/
public class DigitalEntity {private double a;private Double b;public DigitalEntity() {}public double getA() {return a;}public void setA(double a) {this.a = a;}public Double getB() {return b;}public void setB(Double b) {this.b = b;}@Overridepublic String toString() {return "DigitalEntity{" +"a=" + a +", b=" + b +'}';}
}

3 测试

3.1 基础类型

为基础类型赋值null,测试样例如下:

/*** 基础类型填充数据*/&#64;Testpublic void basicTypeTest() {DigitalEntity digitalEntity &#61; new DigitalEntity();Map<String, Double> map &#61; new HashMap<>();map.put("1", null);digitalEntity.setA(map.get("1"));}

测试结果如下&#xff0c;由结果可知&#xff0c;为基础类型赋值null时&#xff0c;直接抛出异常。
在这里插入图片描述

3.2 包装类型

为包装类型赋值null&#xff0c;测试样例如下&#xff1a;

/*** 包装类型填充数据*/&#64;Testpublic void wrappedTypeTest() {DigitalEntity digitalEntity &#61; new DigitalEntity();Map<String, Double> map &#61; new HashMap<>();map.put("1", null);digitalEntity.setB(map.get("1"));Double b &#61; digitalEntity.getB();System.out.println(">>>>>>>>>Double b:" &#43; b);}

测试结果入下&#xff0c;由结果可知&#xff0c;为包装类型赋值null时&#xff0c;不会抛出异常&#xff0c;只是属性值为null&#xff0c;在使用值时&#xff0c;需要做判断。
在这里插入图片描述

4 完整样例

package com.monkey.java_study.functiontest;import com.monkey.java_study.common.entity.DigitalEntity;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;import java.util.HashMap;
import java.util.Map;/*** 基础数据类型与包装数据类型测试.** &#64;author xindaqi* &#64;date 2021-11-08 17:33*/
public class DigitalTest {private static final Logger logger &#61; LogManager.getLogger(DigitalTest.class);/*** 基础类型填充数据*/&#64;Testpublic void basicTypeTest() {DigitalEntity digitalEntity &#61; new DigitalEntity();Map<String, Double> map &#61; new HashMap<>();map.put("1", null);digitalEntity.setA(map.get("1"));}/*** 包装类型填充数据*/&#64;Testpublic void wrappedTypeTest() {DigitalEntity digitalEntity &#61; new DigitalEntity();Map<String, Double> map &#61; new HashMap<>();map.put("1", null);digitalEntity.setB(map.get("1"));Double b &#61; digitalEntity.getB();System.out.println(">>>>>>>>>Double b:" &#43; b);}
}

5 小结

  • 使用JavaBean规范定义实体时&#xff0c;属性使用包装类型&#xff1b;
  • 包装类型的数据使用时&#xff0c;特别是数字类型的包装类型&#xff0c;需要判断是否为null。

推荐阅读
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • 如何使用和示例代码解析 org.semanticweb.owlapi.model.OWLSubPropertyChainOfAxiom.getPropertyChain() 方法 ... [详细]
  • Java 模式原型在游戏服务器架构中的应用与优化 ... [详细]
  • Eclipse JFace Text框架中IDocument接口的getNumberOfLines方法详解与编程实例 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • Redis哈希数据结构入门指南
    Redis的哈希数据结构与Java中的HashMap类似,采用数组加链表的方式实现。数组用于存储哈希值的位置,而链表则用于处理哈希冲突的情况。此外,Redis的哈希数据结构还支持高效的字段操作和内存优化,适用于多种应用场景,如缓存和会话管理。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
  • 深入解析 Android TextView 中 getImeActionLabel() 方法的使用与代码示例 ... [详细]
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 如何使用 com.jme3.input.FlyByCamera 构造函数及其代码示例详解 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • JDK 1.8引入了多项并发新特性,显著提升了编程效率。本文重点探讨了LongAdder和StampedLock的特性和应用场景。此外,还介绍了在多线程环境中发生死锁时,如何通过jps命令进行诊断和排查,提供了详细的步骤和示例。这些改进不仅增强了系统的性能,还简化了开发者的调试工作。 ... [详细]
  • Java集合框架特性详解与开发实践笔记
    Java集合框架特性详解与开发实践笔记 ... [详细]
author-avatar
优美rosner_704
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有