Java中的基本数据类型默认值扩展
因为在很多情况下,如果要转换的数据为null,调用者期望的是返回默认值.
系统自动提供的默认值不能满足我们的需求,例如int的默认值为0,但是在sql查询中,如果查询失败,我们期望的是小于0的值,例如Select Count(1) from table1这样的操作.
为此,我提供了取得数据类型默认值的扩展函数
目标:
1)实现根据自己需要返回基本类型的默认值
2) 性能不要太差
1: 接口:
public static <T> T GetDefault(Class<T> t)
2: 实现
/**
* 获取数据类型的默认值
* @param t
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T GetDefault(Class<T> t) {
if (t == Object.class) {
return null;
}
if (t == Integer.class) {
return t.cast(-1);
}
if (t == String.class) {
return t.cast("");
}
if (t == boolean.class) {
Object ret = false;
return (T)ret;
}
if (t == Boolean.class) {
Object ret = false;
return (T)ret;
}
if (t == BigDecimal.class) {
return (T)(new BigDecimal(-1));
}
Class<?> superClass = t.getSuperclass();
if (superClass == null) {
Object val = -1;
return (T)val;
}
if (t.getSuperclass().equals(Number.class)) {
Object val = -1;
return (T)val;
}
return null;
}
3: 测试代码
@Test
public void Test_HiTypeHelper_Cast() {
Integer val = 1;
int ret = HiTypeHelper.Cast(int.class, val);
Assert.assertEquals(ret, 1);
String text = "1";
ret = HiTypeHelper.Cast(int.class, text);
Assert.assertEquals(ret, 1);
text = "a";
ret = HiTypeHelper.Cast(int.class, text);
Assert.assertEquals(ret, -1);
int val2 = 1;
Integer ret2 = HiTypeHelper.Cast(Integer.class, val2);
Assert.assertEquals(ret2.intValue(), 1);
text = "1";
ret2 = HiTypeHelper.Cast(Integer.class, text);
Assert.assertEquals(ret2.intValue(), 1);
boolean bl = HiTypeHelper.Cast(boolean.class, 1);
Assert.assertTrue(bl);
bl = HiTypeHelper.Cast(boolean.class, 3);
Assert.assertTrue(bl);
bl = HiTypeHelper.Cast(boolean.class, 0);
Assert.assertFalse(bl);
bl = HiTypeHelper.Cast(boolean.class, -1);
Assert.assertFalse(bl);
bl = HiTypeHelper.Cast(boolean.class, "1");
Assert.assertTrue(bl);
bl = HiTypeHelper.Cast(boolean.class, "3");
Assert.assertTrue(bl);
bl = HiTypeHelper.Cast(boolean.class, "0");
Assert.assertFalse(bl);
bl = HiTypeHelper.Cast(boolean.class, "-1");
Assert.assertFalse(bl);
}
Java中的基本数据类型默认值扩展的更多相关文章
- java中8种数据类型和默认值所占字节数
java 8种基本数据类型的默认值及所占字节数 通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge; 2 3 public class Ceshi { 4 int a; ...
- JAVA中分为基本数据类型及引用数据类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...
- 二、java中的基本数据类型
总结: 1.java中的基本数据类型有byte.short.int.long;float.double;char;boolean. 2.基本数据类型与1相对应分别占1.2.4.8;4.8;2;1.(单 ...
- Java中的变量数据类型补充
Java中变量的数据类型的补充 变量按照数据类型进行分类 1.基本数据类型 数值型:①整数类型(byte,short,int,long)②浮点型(float,doubbe)③字符型(char)④布尔型 ...
- java 中的引用数据类型
字符串String 在java 中,字符串不是基本数据类型,而是String 类的对象,当我们创建一个字符串的时候,真的是要使用new 来调用String 构造函数 String str = new ...
- java 中的基本数据类型
1, 变量 Java是强类型语言, 对于每一种数据都定义了类型,基本数据类型分为数值型,字符型,布尔型.数值型又分为了整型和浮点型. 整型又分为byte, int, short long. 浮点型又 ...
- JAVA中分为基本数据类型和引用数据类型区别
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...
- Java中的原生数据类型
Java中的原生数据类型(Primitive DataType)共有8种: 1)整型: 使用int表示(32位).2)字节型: 使用byte表示(从-128到127之间的256个整数).3)短 ...
- Java中的基本数据类型和引用类型
一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围-32768 ...
- java中的基本数据类型一定存储在栈中吗?
首先说明,"java中的基本数据类型一定存储在栈中的吗?”这句话肯定是错误的. 下面让我们一起来分析一下原因: 基本数据类型是放在栈中还是放在堆中,这取决于基本类型在何处声明,下面对数据类型 ...
随机推荐
- Python如何获取request response body
在Python中,我们可以使用多个库来发送HTTP请求并获取响应体(response body).其中,最常用的库之一是 requests.这个库提供了简单易用的接口来发送HTTP请求,并可以方便地获 ...
- orange pi 香橙派 zero 刷openwrt当作有wifi的小路由器用
前面写过我用香橙派zero来测量温度 https://www.cnblogs.com/jar/p/15848178.html 最近准备把他改造成路由器 https://www.right.com.cn ...
- git 阻止在某个分支上面提交commit
比如在开发中不希望master分支被commit做提交,那么我们可以这样做 找到 .git/hook/文件夹 然后在里面复制一个 pre-commit出来 cd .git/hooks/ cp pre- ...
- 一款绘制3D架构图的在线神器:iCraft Editor
在软件开发的世界里,架构图是系统设计的蓝图,它们不仅帮助团队理解系统的整体结构,还能提升沟通效率,确保项目的顺利推进.然而,绘制一张清晰.直观的架构图,往往需要大量时间和专业工具.面对繁琐的操作和复杂 ...
- vue2-脚手架
Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台) https://cli.vuejs.org/zh/ 使用脚手架 安装脚手架 npm install -g @vue/cli 使用脚手架创 ...
- 玩转AI工作流:一步步搭建灵活的自动化流程
我们之前搭建了许多不同类型的智能体,其中最受欢迎的就是在智能体中搭建各种工作流--这也是我最喜欢探索和玩的领域.那么,究竟什么是工作流?如何在后端实现一个工作流呢?今天我们就先简单了解下. 什么是工作 ...
- Impala学习--Impala概述,Impala系统架构
Imapla概述 Impala是Cloudera公司的一个实时海量查询产品.是对于已有Hive产品的补充.Impala采用了和Hive相同的类SQL接口,但并没有采用MapRed框架执行任务,而是采用 ...
- Docker可视化容器管理工具之Portainer
官网:https://www.portainer.io/ 仓库地址:https://hub.docker.com/r/portainer/ Portainer 是一个轻量级的管理 UI ,可让你轻松管 ...
- MySQL底层概述—10.InnoDB锁机制
大纲 1.锁概述 2.锁分类 3.锁实战之全局锁 4.锁实战之表级锁(偏读) 5.锁实战之行级锁(偏写)-行级锁升级表级锁 6.锁实战之行级锁(偏写)-间隙锁 7.锁实战之行级锁(偏写)-临键锁 8. ...
- 拿到小米 Offer,却迷茫了。。
大家好,我是程序员鱼皮,12 月了,很多小伙伴也拿到了秋招的 Offer(没拿到也不要灰心),但即使拿到 Offer,可能还会有一些其他的顾虑.今天分享我们编程导航一位鱼友的提问,给大家作为学习成长的 ...