java – 包含现有数据值类的lombok构建器
发布时间:2020-12-15 02:18:10 所属栏目:Java 来源:网络整理
导读:有一个库提供了类,如org. springframework.security.oauth2.provider.client.BaseClientDetails,我想把它包装成一个Lombok(或类似的)构建器. 目前,我派生了一个这样的包装类: public static final class BaseClientDetailsWrapper extends BaseClientDetail
有一个库提供了类,如org.
springframework.security.oauth2.provider.client.BaseClientDetails,我想把它包装成一个Lombok(或类似的)构建器.
目前,我派生了一个这样的包装类: public static final class BaseClientDetailsWrapper extends BaseClientDetails { @Builder private BaseClientDetailsWrapper( final String clientId,final List<String> resourceIds,final List<GrantedAuthority> suthorities,final List<String> scopes,final List<String> autoApproveScopes,final List<String> authorizedGrantTypes,final String clientSecret) { super(); setClientId(clientId); setResourceIds(resourceIds); setAuthorities(authorities); setScope(scopes); setAuthorizedGrantTypes(authorizedGrantTypes); setAutoApproveScopes(autoApproveScopes); setClientSecret(clientSecret); } } 有没有办法摆脱恼人的setXxx(…)代码? 解决方法
是不是有更符合您需求的构造函数?不,没有办法要求Lombok将其他功能视为您不受您控制的构建器模板.
作为旁注,不需要对BaseClientDetails进行子类化.你可以将@Builder放在任何函数上,无论它在哪个类中.以下是完全可以接受的: @Builder(builderMethodName = "fullname") private static String fullnameHelper(String forename,String middle,String surname) { Objects.requireNonNull(forename); Objects.requireNonNull(surname); return forename + " " + (middle == null ? "" : middle + " ") + surname; } 方法的名称根本不重要.如果需要,可以在实用程序类中私下隐藏它.您可以这样使用它: fullname().forename("Alan").surname("Turing").build()); fullname().forename("Donald").middle("E.").surname("Knuth").build()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |