在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 關(guān)于java方法參數(shù)的困惑

關(guān)于java方法參數(shù)的困惑

    /**獲取角色對應(yīng)權(quán)限*/
    @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
    }

我現(xiàn)在項(xiàng)目里面使用上面這種形式來寫代碼.每個方法的參數(shù)定義成一個類.方法的返回值也定義成一個類.
這樣寫主要是想使用valid來做參數(shù)校驗(yàn),將參數(shù)封裝成一個對象也方便使用反射來調(diào)用方法.

這樣就會導(dǎo)致項(xiàng)目里面有很多這種參數(shù)和返回值的類.
請問這種寫法出了類定義的多點(diǎn),還有什么不好的地方? 會影響性能嗎?

回答
編輯回答
玄鳥

3個以內(nèi)用url傳參數(shù),3個以上用對象

2018年3月3日 20:06
編輯回答
入她眼

如果確實(shí)有這個需求的話,不為特定的接口參數(shù)寫對應(yīng)的數(shù)據(jù)類,也得寫一串JSON解析代碼,相較而言寫類是更好的方式。
也可以考慮使用GraphQL來設(shè)計(jì)接口的參數(shù),不過也要寫Scheme,但是更為靈活

2017年7月9日 19:54
編輯回答
夕顏

顯然是太靈話, 修改邏輯要重新定義類, 類的序列化緩存也要考慮升級時(shí)的版本兼容的問題.
要看有多少,幾十個的話不用太在意. 好處是有強(qiáng)類型驗(yàn)證.

如果很多的話建議還是用抽象的Map來存參數(shù). 這樣可以把參數(shù)與邏輯剝離.

2018年9月6日 16:17
編輯回答
夕顏

謝邀。
有很多這種參數(shù)和返回值的類,其實(shí)即使你不做校驗(yàn)用,也應(yīng)該這么寫,參數(shù)封裝成對象理所當(dāng)然,只不過很多類有業(yè)務(wù)重復(fù)的情況下可以抽象、繼承的方式來做。因?yàn)闃I(yè)務(wù)需求問題,校驗(yàn)多種多樣,代碼這種bean變多,其實(shí)也沒什么影響,只想便于維護(hù)就好;

2017年7月23日 14:13