java 初始化Number包装类型
比如有的java bean成员变量类型为Integer或者Long,
如果没有设置初始值,默认为null
下面的方法用来设置默认值
/*** * 数值类型(比如Integer,Long)如果值为null,则自动设置为0 * @param obj * @throws SecurityException * @throws NoSuchFieldException * @throws IllegalArgumentException * @throws IllegalAccessException */ public static void convertNumberNull20(Object obj) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { if (obj == null) { return; } List<Field> fieldsList = getAllFieldList(obj.getClass()); if (ValueWidget.isNullOrEmpty(fieldsList)) { return; } for (int i = 0; i < fieldsList.size(); i++) { Field f = fieldsList.get(i); Object vObj = getObjectValue(obj, f); String typeName = f.getType().getName(); if (vObj == null) { if (typeName.equals("java.lang.Integer") || typeName.equals("java.lang.Short")) { f.set(obj, 0); } else if (typeName.equals("java.lang.String")) { f.set(obj, ""); } else if (typeName.equals("java.lang.Long")) { f.set(obj, 0L); } } } }
应用:
@Override protected void encode(ChannelHandlerContext ctx, ProxyMessage msg, ByteBuf out) throws Exception { int bodyLength = TYPE_SIZE + SERIAL_NUMBER_SIZE + inet_Port_SIZE + URI_LENGTH_SIZE; byte[] uriBytes = null; if (msg.getUri() != null) { uriBytes = msg.getUri().getBytes(SystemHWUtil.CHARSET_UTF); bodyLength += uriBytes.length; } if (msg.getData() != null) { bodyLength += msg.getData().length; } // write the total packet length but without length field's length. out.writeInt(bodyLength); ReflectHWUtils.convertNumberNull20(msg); out.writeByte(msg.getType()); out.writeLong(msg.getSerialNumber()); /*if(null==msg.getInetPort()){ msg.setInetPort(88888); }*/ out.writeInt(msg.getInetPort());//added by huangweii @2017-01-21 20:43:38 if (uriBytes != null) { out.writeByte((byte) uriBytes.length); out.writeBytes(uriBytes); } else { out.writeByte((byte) 0x00); } if (msg.getData() != null) { out.writeBytes(msg.getData()); } }
相关推荐
errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper...
第四章 Java 语言基础(二)主要探讨了Java中的基本数据类型以及它们的类包装,同时也涉及到了数组,特别是如何定义、初始化和引用一维及多维数组。 首先,Java中的基本数据类型包括:boolean、char、byte、short、...
在Java中,每一个基本数据类型都有一个对应的包装类,这些包装类继承自 `Number` 类。 - **基本数据类型及其包装类**: - `boolean` —— `Boolean` - `byte` —— `Byte` - `short` —— `Short` - `int` —— ...
这里提到了几个关键的练习题目,涵盖了字符常量、赋值操作、基本类型封装和变量初始化等核心概念。 1. **CharConst, P15**:在Java中,字符类型`char`可以表示单个字符。字符常量可以通过直接赋值、转义Unicode码或...
变量在使用前必须声明并初始化。 #### W. Workspace (工作空间) 工作空间是指开发环境中所有项目的集合。在Java开发中,通常会有一个项目来组织源代码、资源文件等。 #### Z. Zero (零) 零在Java中通常表示一个...
`Double` 类在 `java.lang` 包中,它是一个封装类,用于包装 `double` 原始类型,并提供了一些与 `double` 类型相关的操作方法。 4. **`java.lang.Math` (F):** 错误。`Math` 类同样位于 `java.lang` 包中,但它...
这些包装类型实现了`java.lang.Number` 接口,并提供了额外的方法来处理这些数值。包装类型支持`null` 值,而基本数据类型不支持。 | 基本数据类型 | 包装类型 | |----------|-----------| | boolean | Boolean | |...
9. **泛型数组初始化**:必须使用原始类型创建数组,然后通过类型转换赋值给泛型引用,如`List[] array = (List[]) new List[10];` 10. **泛型类中的静态方法和静态变量**:静态成员不受泛型类型参数的影响,它们...
`final`关键字用于声明不可更改的变量、方法或类,表明其状态一旦初始化就不能再被修改。`finally`块在try-catch-finally语句中,用于确保无论是否发生异常,其中的代码都会被执行,常用于资源清理。`finalize`是`...
3. **变量初始化块(Enhanced for Loop)** 也被称为foreach循环,简化了遍历集合、数组等的数据操作。例如,遍历数组: ```java int[] numbers = {1, 2, 3, 4, 5}; for (int number : numbers) { System.out....
健壮性是Java的一大优点,它的编译器会在编译阶段检查许多潜在的错误,比如类型不匹配、未初始化的变量等。Java还通过垃圾回收机制自动管理内存,避免了C++中常见的内存泄漏问题。此外,Java禁止指针操作,减少了很...
构造函数是一种特殊的方法,用于初始化新创建的对象。在Java中,每个类都有至少一个构造函数,构造函数的名称与类名相同,没有返回类型。构造函数可以用来设置对象的初始状态。 综上所述,Java是一种强大且功能全面...
了对应的包装类型。`int` 是 Java 中的基本数据类型之一,用于表示整数,占用 32 位存储空间;而 `Integer` 是 `int` 的包装类,它实现了 `Number` 接口并继承自 `Object` 类,这意味着它可以被当作一个对象来使用。...
`Applet` 类的主要功能是提供了一个基本框架,其中包括初始化、启动、停止以及销毁等生命周期方法。此外,还提供了一系列用于处理图形、鼠标和键盘事件的方法。 - **构造器**:提供了一个默认构造器。 - **初始化...
Java作为一种面向对象的语言,为了保持其面向对象的一致性,对于每种基本数据类型都提供了一个对应的包装类。这些包装类允许基本数据类型以对象的形式存在,从而使得它们可以作为参数传递给方法或者存储在集合中。 ...
数组是Java编程中的重要组成部分,课程详细解析了数组的基本概念、初始化、内存分析,以及String类的相关方法。还探讨了StringBuilder和StringBuffer在字符串操作中的高效使用,以及如何模拟ArrayList容器的底层实现...
而在增强的for循环中,初始化表达式只计算一次,避免了不必要的重复计算。例如,对于数组`computeNumbers()`的结果,我们可以直接这样写: ```java int sum = 0; for (int number : computeNumbers()) { sum += ...