`

java 初始化Number包装类型

    博客分类:
  • Java
阅读更多

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());
        }
    }

 

 

0
0
分享到:
评论

相关推荐

    Java开发技术大全(500个源代码).

    errorInit.java 演示变量初始化错误的程序 integerExample.java 演示各种整型变量的使用 isPrime.java 判断素数 leapYearByIf.java 用if语句判断闰年 leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper...

    java课件(第四章,会对你有帮助)

    第四章 Java 语言基础(二)主要探讨了Java中的基本数据类型以及它们的类包装,同时也涉及到了数组,特别是如何定义、初始化和引用一维及多维数组。 首先,Java中的基本数据类型包括:boolean、char、byte、short、...

    java语言循环结构、条件语句、Number和Math类、Character类、String类.pdf

    在Java中,每一个基本数据类型都有一个对应的包装类,这些包装类继承自 `Number` 类。 - **基本数据类型及其包装类**: - `boolean` —— `Boolean` - `byte` —— `Byte` - `short` —— `Short` - `int` —— ...

    02JAVA 语言基础1

    这里提到了几个关键的练习题目,涵盖了字符常量、赋值操作、基本类型封装和变量初始化等核心概念。 1. **CharConst, P15**:在Java中,字符类型`char`可以表示单个字符。字符常量可以通过直接赋值、转义Unicode码或...

    学习java必备的单词

    变量在使用前必须声明并初始化。 #### W. Workspace (工作空间) 工作空间是指开发环境中所有项目的集合。在Java开发中,通常会有一个项目来组织源代码、资源文件等。 #### Z. Zero (零) 零在Java中通常表示一个...

    文章分类:Java编程,java面试题2

    `Double` 类在 `java.lang` 包中,它是一个封装类,用于包装 `double` 原始类型,并提供了一些与 `double` 类型相关的操作方法。 4. **`java.lang.Math` (F):** 错误。`Math` 类同样位于 `java.lang` 包中,但它...

    java基础.txt

    这些包装类型实现了`java.lang.Number` 接口,并提供了额外的方法来处理这些数值。包装类型支持`null` 值,而基本数据类型不支持。 | 基本数据类型 | 包装类型 | |----------|-----------| | boolean | Boolean | |...

    Java 基础(4-8) - 泛型机制详解.pdf

    9. **泛型数组初始化**:必须使用原始类型创建数组,然后通过类型转换赋值给泛型引用,如`List[] array = (List[]) new List[10];` 10. **泛型类中的静态方法和静态变量**:静态成员不受泛型类型参数的影响,它们...

    Java文本文件

    `final`关键字用于声明不可更改的变量、方法或类,表明其状态一旦初始化就不能再被修改。`finally`块在try-catch-finally语句中,用于确保无论是否发生异常,其中的代码都会被执行,常用于资源清理。`finalize`是`...

    Java5.0 Tiger程序高手秘笈

    3. **变量初始化块(Enhanced for Loop)** 也被称为foreach循环,简化了遍历集合、数组等的数据操作。例如,遍历数组: ```java int[] numbers = {1, 2, 3, 4, 5}; for (int number : numbers) { System.out....

    Java基础知识总结.docx

    健壮性是Java的一大优点,它的编译器会在编译阶段检查许多潜在的错误,比如类型不匹配、未初始化的变量等。Java还通过垃圾回收机制自动管理内存,避免了C++中常见的内存泄漏问题。此外,Java禁止指针操作,减少了很...

    21天学通java

    构造函数是一种特殊的方法,用于初始化新创建的对象。在Java中,每个类都有至少一个构造函数,构造函数的名称与类名相同,没有返回类型。构造函数可以用来设置对象的初始状态。 综上所述,Java是一种强大且功能全面...

    java面试题合集

    了对应的包装类型。`int` 是 Java 中的基本数据类型之一,用于表示整数,占用 32 位存储空间;而 `Integer` 是 `int` 的包装类,它实现了 `Number` 接口并继承自 `Object` 类,这意味着它可以被当作一个对象来使用。...

    Java SE7 API中文文档-类库查询

    `Applet` 类的主要功能是提供了一个基本框架,其中包括初始化、启动、停止以及销毁等生命周期方法。此外,还提供了一系列用于处理图形、鼠标和键盘事件的方法。 - **构造器**:提供了一个默认构造器。 - **初始化...

    Day20 Java常用类

    Java作为一种面向对象的语言,为了保持其面向对象的一致性,对于每种基本数据类型都提供了一个对应的包装类。这些包装类允许基本数据类型以对象的形式存在,从而使得它们可以作为参数传递给方法或者存储在集合中。 ...

    JAVA视频教程.pdf

    数组是Java编程中的重要组成部分,课程详细解析了数组的基本概念、初始化、内存分析,以及String类的相关方法。还探讨了StringBuilder和StringBuffer在字符串操作中的高效使用,以及如何模拟ArrayList容器的底层实现...

    jdk1.5 tiger java5 新特性

    而在增强的for循环中,初始化表达式只计算一次,避免了不必要的重复计算。例如,对于数组`computeNumbers()`的结果,我们可以直接这样写: ```java int sum = 0; for (int number : computeNumbers()) { sum += ...

Global site tag (gtag.js) - Google Analytics