Java 禁用";恒定条件&;“例外情况”;IntelliJ IDEA中的字段检查
我正在使用一个框架(Minecraft Forge),该框架将特定对象注入带有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
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
的方法相比,这种方法似乎不太老练,但如果有很多字段需要初始化(在我的例子中就是这样),它也会增加很多混乱
例如:
公共类注入{
@能力项目
公共静态最终能力;
静止的{
能力=零;
}
公共空间{
//没有警告
能力=能力;
}
}