java 初始化Number包装类型

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

猜你喜欢

转载自hw1287789687.iteye.com/blog/2354407