[英]Why are java interface constants treated as non-public by ConstantName check in Checkstyle
[英]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.