gpt4 book ai didi

java - sonarQube - 使字段 transient 或可序列化

转载 作者:搜寻专家 更新时间:2023-11-01 02:39:55 24 4
gpt4 key购买 nike

我正在尝试解决 sonarQube 插件为 Jenkins 报告的以下违规行为:“使‘更新’成为 transient 或可序列化的。”。重力:临界,标签:序列化。

我有以下共享接口(interface)

public interface MPUpdate {

void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException ;
}

以下枚举是应用程序逻辑的入口点

public enum DomainResource implements MPUpdate {

PROGRAMMES( new ProgrammeUpdate() ),
PRODUCTIONS( new ProductionUpdate() );
// more enums

private DomainResource( MPUpdate update ) {
this.update = update;
}

private final MPUpdate update; // Sonar: make "update" transient or serializable, priority: critical, tag: serialization

@Override
public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {
update.apply( svc, jerseyClientResp );
}
}

通过枚举初始化的逻辑单元之一

public class ProgrammeUpdate implements MPUpdate {

private final ResponseConverter<ProgrammeDto> responseConverter = new ResponseConverter<>( ProgrammeDto.class );

@Override
public void apply( SoapService svc, byte[] jerseyClientResp ) throws MPException {

// APPLICATION LOGIC
}

}

最后是这样使用的:

...
String levelFromUrl = getLevel(); // eg. "programmes"
MPUpdate resource;
resource = DomainResource.valueOf( levelFromUrl.toUpperCase() );
...
resource.apply( soapService, jerseyClientOutcome );
...

有什么帮助吗?使用枚举是否可以提高日志记录的性能?

非常感谢

最佳答案

你不需要它是可序列化的。您应该将其标记为 transient 。枚举使用简单的名称字符串进行序列化,因此其他字段无关紧要。只需将字段标记为 transient 以使 Sonar 开心(尽管工具本身应该真的能够识别这种情况)。

关于java - sonarQube - 使字段 transient 或可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36017994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com