public static <K, C, V, T> V computeIfAbsent(Map<K, V> target, K key, BiFunction<C, T, V> mappingFunction, C param1,
                                                 T param2) {
        Objects.requireNonNull(target, "target");
        Objects.requireNonNull(key, "key");
        Objects.requireNonNull(mappingFunction, "mappingFunction");
        Objects.requireNonNull(param1, "param1");
        Objects.requireNonNull(param2, "param2");
        V val = target.get(key);
        if (val == null) {
            V ret = mappingFunction.apply(param1, param2);
            target.put(key, ret);
            return ret;
        }
        return val;
    }
@Test
    public void computeIfAbsentNotExistKeyTest() {
        Map<String, Object> map = new HashMap<>();
        map.put("abc", "123");
        BiFunction<String, String, Object> mappingFunction = (a, b) -> a + b;
        try {
            MapUtil.computeIfAbsent(map, null, mappingFunction, "param1", "param2");
        } catch (Exception e) {
            if (e instanceof NullPointerException) {
                Assert.isTrue(Objects.equals("key", e.getMessage()));
            }
        }
    }