当前位置: 首页 > news >正文

Java 泛型方法总结

示例一:泛型对象参数

/**
 * 新增时维护信息
 *
 * @param obj   对象
 * @param clazz class
 * @param <T>   泛型
 * @return 返回对象
 */
public static <T> T insertUser(T obj, Class<T> clazz) {
    CurrentUser currentUser = OauthUserCheckUtil.checkLoginUser();
    JSONObject jsonObject = (JSONObject) JSONObject.toJSON(obj);
    jsonObject.put("creatorId", currentUser.getId());
    jsonObject.put("creatorName", currentUser.getName());
    jsonObject.put("createdTime", new Date());
    jsonObject.put("deletedFlag", ScEffectiveOrFailure.EFFECTIVE_OR_FAILURE_1.getCode());
    return JSON.toJavaObject(jsonObject, clazz);
}

示例二:泛型对象集合参数

/**
 * 属性非空校验
 *
 * @param list 数据集合
 */
public <T> void checkObjFieldIsNull(List<T> list, Object ob) {
    HashMap<String, String> maps = new HashMap<>();
    Class<? extends T> clz = (Class<? extends T>) ob.getClass();
    List<Field> fields = Arrays.asList(clz.getDeclaredFields());
    fields.parallelStream().forEach(vo -> {
        if (vo.getAnnotation(ApiModelProperty.class) != null) {
            maps.put(vo.getName(), vo.getAnnotation(ApiModelProperty.class).value());
        }
    });
    list.forEach(vo -> {
        JSONObject obj = (JSONObject) JSONObject.toJSON(vo);
        maps.keySet().forEach(vv -> {
            if (!"taskState,taskProgress".contains(vv) && StringUtils.isBlank(obj.getString(vv))) {
                throw new ServiceException(maps.get(vv) + ":值不能为空");
            }
            //校验形象进度
            if (StringUtils.equals("visualSchedule", vv)) {
                try {
                    new BigDecimal(obj.getString(vv));
                } catch (Exception e) {
                    throw new ServiceException("形象进度值非法:" + obj.getString(vv));
                }
            }
            //校验牵头专业
            if (StringUtils.equals("leadingMajor", vv)) {
                if (!departmentList.contains(obj.getString(vv))) {
                    throw new ServiceException("牵头专业非法:" + obj.getString(vv));
                }
            }
            //日期校验
            if (StringUtils.equals("plannedCompletionTime", vv)) {
                boolean legalDate = DateUtils.isLegalDate(obj.getString(vv).length(), obj.getString(vv), "yyyy-MM-dd");
                if (!legalDate) {
                    throw new ServiceException("预计完成时间格式非法: " + obj.getString(vv) + "_日期格式参考:2008-08-08");
                }
            }
        });
    });
}

相关文章:

  • WebRTC Native M96 SDK接口封装--注册语音观测器对象获取原始音频数据registerAudioFrameObserver
  • 深入理解Linux网络技术内幕(十一)——帧的传输
  • PXE + Kickstart 服务器批量安装Linux系统
  • 基于鲁棒-距离平衡和基于学习的人工蜂群的强大优化算法(Matlab代码实现)
  • 使用opencv截取旋转框目标
  • 深入react源码看setState究竟做了什么?
  • 无监督学习
  • [附源码]JAVA毕业设计宿舍管理系统(系统+LW)
  • TI Lab_SRR学习_1 硬件基础 AWR1642和AWR1642EVM
  • 金蝶云星空生产管理(冲刺学习)
  • 【pen200-lab】10.11.1.101
  • 【css遇到的问题】vue中使用select下拉框,数据绑定但是默认不显示问题
  • 42. Python range函数—生成器函数
  • [附源码]Python计算机毕业设计Django医学图像管理平台
  • 阿里云的工程师又闯祸了,github上紧急修复
  • 微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.3 精确查询
  • 基于python环境的pip安装事项
  • Jenkins之Email配置与任务邮件发送实践与踩坑(转)
  • 我是如何开始能写python爬虫的?给零基础入门Python小白一条清晰的学习路线
  • 投屏电脑怎么操作?投屏电脑最常用的4种方式
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉