为了账号安全,请及时绑定邮箱和手机立即绑定

Intellij 静态最终集合检查

Intellij 静态最终集合检查

子衿沉夜 2021-09-29 17:11:54
我寻找 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 没有(据我所知;我可能会更正)对使用大写字段名称的可修改对象进行检查。


查看完整回答
反对 回复 2021-09-29
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

IntelliJ 已经可以识别调用add不可变集合的情况:


private final Set<SessionServerState> ALL_STATES = Collections.unmodifiableSet(EnumSet.allOf(SessionServerState.class));


ALL_STATES.add(...);

//img1.sycdn.imooc.com//61542dfd0001bba601970072.jpg

如果你展开这个工具提示,它来自Constant conditions & exceptions检查。

//img1.sycdn.imooc.com//61542e070001d27011110215.jpg


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信