繁体   English   中英

Checkstyle ConstantName 规则适用于并非真正恒定的事物

[英]Checkstyle ConstantName rule kicks in for things that are not really constant

Google 的 Java 编码指南中所述,我想检查我的字段名称是否仅适用于符合我首选的“常量”定义的字段。

因此:

private static final integer NUM = 1974;  // is a constant
private static final String NAME = "Freddie"  // is a constant

private static final Map<String, String> myMap = new HashMap<>();  // is NOT a constant
private static final Logger myLogger = LogManager.getLogger();  // is NOT a constant

是否可以指定仅当类型是原始类型或对字符串或其他不可变class 的最终引用时才需要大写命名的规则?

并不真地。 Checkstyle 必须执行代码。 例如, private static final Map<String, String> myMap = Map.of("One", "Blue", "Two", "Red"); 是一个不可变的值。

您可以做的一件事是告诉 Checkstyle 它不应该对私有字段强制执行命名方案:

<module name="ConstantName">
    <property name="applyToPrivate" value="false"/>
</module>

另一种选择是指定允许的名称:

<module name="ConstantName">
    <property name="format"
        value="^([A-Z][A-Z0-9]*(_[A-Z0-9]+)*|myMap|myLogger)$"/>
</module>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM