Java 禁用";恒定条件&;“例外情况”;IntelliJ IDEA中的字段检查

Java 禁用";恒定条件&;“例外情况”;IntelliJ IDEA中的字段检查,java,intellij-idea,minecraft,minecraft-forge,Java,Intellij Idea,Minecraft,Minecraft Forge,我正在使用一个框架(Minecraft Forge),该框架将特定对象注入带有null值的public static final字段(通过@CapabilityInject和@ObjectHolder注释)。不幸的是,每当我在不允许null值的上下文中引用其中一个字段时,IntelliJ IDEA中的“常量条件和异常”检查会警告我该字段可能是null(因为它不知道注入) 我知道这些字段在被访问时不会为null,所以我想对它们禁用警告 有没有办法禁用类中特定字段或所有字段的警告?将@Suppres

我正在使用一个框架(Minecraft Forge),该框架将特定对象注入带有
null
值的
public static final
字段(通过
@CapabilityInject
@ObjectHolder
注释)。不幸的是,每当我在不允许
null
值的上下文中引用其中一个字段时,IntelliJ IDEA中的“常量条件和异常”检查会警告我该字段可能是
null
(因为它不知道注入)

我知道这些字段在被访问时不会为
null
,所以我想对它们禁用警告

有没有办法禁用类中特定字段或所有字段的警告?将
@SuppressWarnings(“ConstantConditions”)
//noinspection ConstantConditions
添加到字段中不会删除字段访问上的警告,将注释添加到字段的类中只会删除该类中的警告


我希望避免添加
//noinspection ConstantConditions
null
-检查我访问字段的每个位置。

diesieben07在我的上的线程中回答了这个问题

解决方案/解决方法是创建一个始终返回
null
的方法,用
@Nonnull
@SuppressWarnings(“ConstantConditions”)
对其进行注释,然后使用该方法初始化要注入的字段

例如:

公共类注入{
@能力项目
公共静态最终能力=getNull();
@非空
@SuppressWarnings({“ConstantConditions”,“SameReturnValue”})
私有静态T getNull(){
返回null;
}
公共空间{
//没有警告
能力=能力;
}
}

蝾螈在我的帖子中提供了一个替代方案

他们建议将初始化移到静态初始化器块,而不是在线初始化字段。与总是返回
null
的方法相比,这种方法似乎不太老练,但如果有很多字段需要初始化(在我的例子中就是这样),它也会增加很多混乱

例如:

公共类注入{
@能力项目
公共静态最终能力;
静止的{
能力=零;
}
公共空间{
//没有警告
能力=能力;
}
}