我寻找 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));
2 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
相关检查是设置 > 编辑器 > 检查 > Java > 命名约定 > 具有大写名称的非常量字段。
以上就是全部错误。碰巧您希望该集合不可修改,但EnumSet.of
已完全记录以返回可修改的集合。“常量”的约定是字段本身是常量,而不是被引用的对象(比如比较一下使用LOGGER作为字段名:logger引用是常量,但是logger实例是可以修改的)。Intellij IDEA 没有(据我所知;我可能会更正)对使用大写字段名称的可修改对象进行检查。
慕婉清6462132
TA贡献1804条经验 获得超2个赞
IntelliJ 已经可以识别调用add不可变集合的情况:
private final Set<SessionServerState> ALL_STATES = Collections.unmodifiableSet(EnumSet.allOf(SessionServerState.class));
ALL_STATES.add(...);
如果你展开这个工具提示,它来自Constant conditions & exceptions
检查。
添加回答
举报
0/150
提交
取消