java 函数式返回

 BColumn bColumn = setEntryValue(BColumn.class, dataType, jsonMap, tencentData, currDate, (instance, map) -> {
            instance.setColumnId(getMapValue(map, "id", ""));
            instance.setStatus(BCover.STATUS_NEW);
            instance.setState(getMapValue(map, "state", 0));
            instance.setCreateTime(currDate);
            instance.setCreateOwner(99);
            instance.setId(null);
        });

1:(instance, map) -> { ... }

分解:setEntryValue这个方法【设置属性值】通常一些通用性设置,不涉及业务,(instance, map) -> { ... }   函数式接口实现,功能上方便业务上的数据重设.

2:SetEntryCallback  接口

 

 /**
     * 设置属性值
     *
     * @param clazz 类
     * @param dataType 数据类型
     * @param jsonMap 该对象属性的JSON串
     * @param tencentData TTencentData对象数据,需要保存到数据库
     * @param currDate 当前时间
     * @param callback 回调接口,可供特定设置
     * @return 设置好属性值的实例
     * @throws Exception
     */

 private T setEntryValue(Class clazz, DataType dataType, Map jsonMap, List tencentData, Date currDate,
                    SetEntryCallback callback) throws Exception {
        T instance = null;
        Map entityFieldsMap = getEntityFieldsMap(clazz);

        @SuppressWarnings("unchecked")
        List> dataList = (List>) jsonMap.get("datas");
        Object obj = jsonMap.get("ts");
        int unixTime = 0;
        if (obj != null && obj instanceof Integer) {
            unixTime = ((Integer) obj).intValue();
        }

         

            tTencentData.setFields(jsonObj.toString());
            @SuppressWarnings("unchecked")
            Map fieldMap = (Map) JSONObject.toBean(jsonObj, Map.class);
            if (fieldMap == null) {
                continue;
            }
            for (Map.Entry entry : entityFieldsMap.entrySet()) {
                String columnName = entry.getKey();
                String fieldName = entry.getValue();
                Object value = fieldMap.get(columnName);
                 
                if (!ObjectUtil.isEmpty(value) && !(value instanceof JSONNull)) {
                    setValueToEntity(instance, value, fieldName);
                }
            }
            callback.setEntry(instance, map);//调用函数返回接口
        }

        return instance;
    }

 

 

  @FunctionalInterface
    private interface SetEntryCallback {
        /**
         * 设置实例后,回调方法
         *
         * @param instance 实例
         * @param fieldMap 属性值map,map<属性名, 属性值>
         */
        public abstract void setEntry(T instance, Map fieldMap);
    }

你可能感兴趣的:(java,知识点)