Intellij 静态最终集合检查

我寻找 IntelliJ 检查,但找不到。

如果你使用下面的代码片段,它应该是一个常量,但它不是一成不变的。

private static final Set<MyEventType> TYPES = EnumSet.of(MyEventType.APPROVED,MyEventType.REJECTED);

执行以下操作是完全有效的。

TYPES.add(MyEventType.CANCELED);

那么是否有一个 IntelliJ 检查会给 mi 一个警告,即我的收藏不是一成不变的。通常这是你想要的静态最终字段。

这将是正确的代码:

private static final Set<MyEventType> TYPES =  Collections.unmodifiableSet(EnumSet.of(MyEventType.APPROVED,MyEventType.REJECTED));



子衿沉夜
浏览 158回答 2
2回答

慕标5832272

相关检查是设置 > 编辑器 > 检查 > Java > 命名约定 > 具有大写名称的非常量字段。以上就是全部错误。碰巧您希望该集合不可修改,但EnumSet.of已完全记录以返回可修改的集合。“常量”的约定是字段本身是常量,而不是被引用的对象(比如比较一下使用LOGGER作为字段名:logger引用是常量,但是logger实例是可以修改的)。Intellij IDEA 没有(据我所知;我可能会更正)对使用大写字段名称的可修改对象进行检查。

慕婉清6462132

IntelliJ 已经可以识别调用add不可变集合的情况:private final Set<SessionServerState> ALL_STATES = Collections.unmodifiableSet(EnumSet.allOf(SessionServerState.class));ALL_STATES.add(...);如果你展开这个工具提示,它来自Constant conditions & exceptions检查。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java