为了账号安全,请及时绑定邮箱和手机立即绑定

关于java方法参数的困惑

关于java方法参数的困惑

慕容708150 2019-01-19 00:30:03
/**获取角色对应权限*/ @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来做参数校验,将参数封装成一个对象也方便使用反射来调用方法. 这样就会导致项目里面有很多这种参数和返回值的类.请问这种写法出了类定义的多点,还有什么不好的地方? 会影响性能吗?
查看完整描述

4 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-03-01
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

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

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

查看完整回答
反对 回复 2019-03-01
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

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

查看完整回答
反对 回复 2019-03-01
?
慕容3067478

TA贡献1773条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 621 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信