JAVA核心概念:Assert断言以及如何在项目中使用Assert

1.概述:

 Java assert关键字允许开发人员快速验证程序的某些假设或状态。

2.断言怎么使用

1. 需要先配置JVM参数,默认Idea是关闭断言(assert)的;

    设置一下jvm的参数,参数是-enableassertions或者-ea(推荐)。

在这里插入图片描述

2.书写格式

格式1

assert [boolean 表达式]

例如:

 int a=10/5;
 asssert a>2;

结果:
在这里插入图片描述

格式2

assert [boolean 表达式 : 错误表达式 (日志)]

例如:

        int a=10/5;
       assert a>5:"出现异常";

结果:
在这里插入图片描述

3.项目中如何使用

  • 当我们更新接口的时候,需要判断是否是当前部门,如果不是就报异常,不使用(Assert)断言的写法:
    @PostMapping(value = EVENT_UPDATE)
    @LogAction("更新")
    public Rest<Void> update(@RequestBody @Validated WorkOrderEventParam condition) {
        if (!verifyDeptId(condition.getDeptId())) new RuntimeException("无法修改其他部门事件");
        workOrderEventService.update(condition);
        return RestBody.ok();
    }

    /**
     * 校验当前是否是同一部门
     */
    public boolean verifyDeptId(Long deptId) {
        //获取用户所属部门
        Long currentDeptId = 0L;
        final UserValueObject user = getCurrentUserInfo();
        if (user != null && CollectionUtil.isNotEmpty(user.getDepartments()))
            currentDeptId = user.getDepartments().get(0).getId();
        return currentDeptId.equals(deptId);
    }

会发现,我们需要做if判断,又需要抛出异常,增加代码的冗余度;

  • 使用(Assert)断言的写法:
    @PostMapping(value = EVENT_UPDATE)
    @LogAction("更新")
    public Rest<Void> update(@RequestBody @Validated WorkOrderEventParam condition) {
        verifyDeptId(condition.getDeptId());
        workOrderEventService.update(condition);
        return RestBody.ok();
    }

    /**
     * 校验当前是否是同一部门
     */
    public void verifyDeptId(Long deptId) {
        //获取用户所属部门
        Long currentDeptId = 0L;
        final UserValueObject user = getCurrentUserInfo();
        if (user != null && CollectionUtil.isNotEmpty(user.getDepartments()))
            currentDeptId = user.getDepartments().get(0).getId();
        //判断传进来的部门id是否和当前部门id一致
        //使用java断言验证
        assert currentDeptId.equals(deptId) : "当前部门无法修改该事件";
    }

会发现,我们根本不需要在Controller接口中做出多余的if判断和throw抛异常,只关注调用service业务方法即可,既增加了代码的可读性,也较少了代码的冗余性;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨某人的快乐学习日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值