H5W3
当前位置:H5W3 > 其他技术问题 > 正文

关于java方法参数的困惑

    /**获取角色对应权限*/
    @RequestMapping("/listByRoleId")
    public CommonResult<List<MenuVo.ListByRoleIdVo>> listByRoleId(@Valid MenuParam.ListByRoleIdParam param){
        return menuService.listByRoleId(param);
    }
    @Data
    public static class ListByRoleIdParam {
        @NotNull(message = "不能为空")
        private Integer roleId;
    }
    @Data
    public static class ListByRoleIdVo {
        private Integer menuId;
        private String name;        //名称
        private Integer pid;        //父id
    }

我现在项目里面使用上面这种形式来写代码.每个方法的参数定义成一个类.方法的返回值也定义成一个类.
这样写主要是想使用valid来做参数校验,将参数封装成一个对象也方便使用反射来调用方法.

这样就会导致项目里面有很多这种参数和返回值的类.
请问这种写法出了类定义的多点,还有什么不好的地方? 会影响性能吗?

回答:

谢邀。
有很多这种参数和返回值的类,其实即使你不做校验用,也应该这么写,参数封装成对象理所当然,只不过很多类有业务重复的情况下可以抽象、继承的方式来做。因为业务需求问题,校验多种多样,代码这种bean变多,其实也没什么影响,只想便于维护就好;

回答:

显然是太灵话, 修改逻辑要重新定义类, 类的序列化缓存也要考虑升级时的版本兼容的问题.
要看有多少,几十个的话不用太在意. 好处是有强类型验证.

如果很多的话建议还是用抽象的Map来存参数. 这样可以把参数与逻辑剥离.

回答:

3个以内用url传参数,3个以上用对象

回答:

如果确实有这个需求的话,不为特定的接口参数写对应的数据类,也得写一串JSON解析代码,相较而言写类是更好的方式。
也可以考虑使用GraphQL来设计接口的参数,不过也要写Scheme,但是更为灵活

本文地址:H5W3 » 关于java方法参数的困惑

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址