如何更改静态地图 Checkstyle 中的缩进?

问题描述 投票:0回答:1

当我应用默认的

google-checkstyle.xml
格式时,会出现以下警告:

Map<String, Object> payment = new LinkedHashMap<>() {{
    put("customer_number", "123456");
}};

“block”子级的缩进级别 12 不正确,预期级别 应为以下之一:16, 20。(169:13) [缩进]

这是因为 checkstyle 需要以下格式:

Map<String, Object> payment = new LinkedHashMap<>() {{
        put("customer_number", "123456");
    }};

但我更喜欢我的自定义格式。我如何在 checkstyle 中更改它? 错误来自定义:

<module name="Indentation">
    <property name="basicOffset" value="4"/>
    ....
</module>

但我无法更改此设置,因为

basicOffset
也适用于所有其他线路。

问题:是否有可能以某种方式从该检查中排除带双括号的静态初始化映射?就像

new LinkedHashMap<>() {{

java checkstyle
1个回答
0
投票

如果您不关心顺序,只需使用

Map.of
就像 Joachim Sauer 在他的评论中已经建议的那样。

如果需要插入顺序,可以使用以下代替匿名子类:

Map<String, Object> payment = List.of(
        // add as many entries as necessary
        entry("customer_number", "123456"))
        .stream()
        .collect(Collectors.toMap(
                Map.Entry::getKey,
                Map.Entry::getValue,
                (v1, v2) -> v1, // unused because the map keys will be unique
                LinkedHashMap::new))

这看起来确实很奇怪,使用

List<Map.Entry<String, Object>>
作为中间对象,并且
toMap
需要从未使用过的合并函数,但它完成了工作。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.