您的位置 首页 java

Java,方法(函数),变量为null值填充默认值,形参null值无类型

前言:

某些场景下,一个变量不允许null,需要去根据是否为null一个一个的填充默认值,好不繁琐,当然我们是有好多办法的。

在某种特定的场景下,还是适合写个通用的填充函数,对对象进行初始化。

得出的结论为:

1、形式参数为null,无类型;

2、形式参数为null,无引用;

形参为null值无类型

 import java.math.BigDecimal;

public final class NullTypeDemo {

    /**
     * @param args
     */    public static void main(String[] args) {
        Integer i1 = null;
        BigDecimal decimal1 = null;
        // null值填充
        fillNull(i1);
        fillNull(decimal1);
        // 输出: null,null
        System.out.println(i1 + "," + decimal1);
        // null值再次填充
        i1 = fillNull(i1);
        decimal1 = fillNull(decimal1);
        // 输出: null,null
        System.out.println(i1 + "," + decimal1);
    }

    /**
     * @param obj
     * @param <T>
     * @return
     */    private static <T> T fillNull(T obj) {
        if (obj instanceof Integer) {
            obj = (T) new Integer(0);
        } else if (obj instanceof BigDecimal) {
            obj = (T) new BigDecimal("0.00");
        }
        return obj;
    }

}
  

变量为null值填充默认值

 import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public final class NullFillDemo {

    /**
     * @param args
     */    public static void main(String[] args) {
        Integer i1 = null;
        BigDecimal decimal1 = null;
        String string = null;
        Object obj = null;
        List list = null;
        // null值填充
        fillNull(i1, Integer.class);
        fillNull(decimal1, BigDecimal.class);
        fillNull(string, String.class);
        fillNull(obj, Object.class);
        fillNull(list, List.class);
        // 输出: null -> null -> null
        System.out.println(i1 + " -> " + decimal1 + " -> " + string);
        // 输出: null -> null
        System.out.println(obj + " -> " + list);
        // null值再次填充
        i1 = fillNull(i1, Integer.class);
        decimal1 = fillNull(decimal1, BigDecimal.class);
        string = fillNull(string, String.class);
        obj = fillNull(obj, Object.class);
        list = fillNull(list, List.class);
        // 输出: 0 -> 0.00 ->
        System.out.println(i1 + " -> " + decimal1 + " -> " + string);
        // 输出:java.lang.Object@73c6c3b2 -> []
        System.out.println(obj + " -> " + list);
    }

    /**
     * @param obj
     * @param tClass
     * @param <T>
     * @return
     */    private static <T> T fillNull(T obj, Class<T> tClass) {
        if (tClass.getName().equals(Integer.class.getName())) {
            obj = (T) new Integer(0);
        } else if (tClass.getName().equals(BigDecimal.class.getName())) {
            obj = (T) new BigDecimal("0.00");
        } else if (tClass.getName().equals(String.class.getName())) {
            obj = (T) new String("");
        } else if (tClass.getName().equals(List.class.getName())) {
            obj = (T) new ArrayList(10);
        } else {
            obj = (T) new Object();
        }
        return obj;
    }

}
  

文章来源:智云一二三科技

文章标题:Java,方法(函数),变量为null值填充默认值,形参null值无类型

文章地址:https://www.zhihuclub.com/187059.shtml

关于作者: 智云科技

热门文章

网站地图