[英]Disable “Constant conditions & exceptions” inspection for field in IntelliJ IDEA
我正在使用一個框架(Minecraft Forge),該框架將特定對象注入具有null
值(通過@CapabilityInject
和@ObjectHolder
批注)的public static final
字段中。 不幸的是,每當我在不允許null
值的上下文中引用這些字段之一時,IntelliJ IDEA中的“恆定條件與異常”檢查會警告我該字段可能為null
(因為它不知道注入)。
我知道這些字段在訪問時不會為null
,因此我想為它們禁用警告。
有沒有一種方法可以針對某個特定字段或類中的所有字段禁用警告? 將@SuppressWarnings("ConstantConditions")
或//noinspection ConstantConditions
到該字段不會刪除有關字段訪問的警告,並且將注釋添加到該字段的類中只會刪除該類中的警告。
我想避免向我從中訪問字段的每個位置添加//noinspection ConstantConditions
或null
-checks。
diesieben07在我的世界鍛造論壇上的主題中回答了這個問題。
解決方案/解決方案是創建一個始終返回null
的方法,並使用@Nonnull
和@SuppressWarnings("ConstantConditions")
對其進行注釋,然后使用該方法來初始化將要注入的字段。
例如:
public class Injection {
@CapabilityInject
public static final Capability<IItemHandler> CAPABILITY = getNull();
@Nonnull
@SuppressWarnings({"ConstantConditions", "SameReturnValue"})
private static <T> T getNull() {
return null;
}
public void doStuff() {
// No warning
Capability<IItemHandler> capability = CAPABILITY;
}
}
Salamander在我的WTDWTF線程中提供了另一種解決方案。
他們建議將初始化移動到靜態初始化程序塊,而不是內聯初始化字段。 與總是返回null
的方法相比,這似乎沒有太多的技巧,但是如果要初始化的字段很多(在我的例子中),這也會增加很多混亂。
例如:
public class Injection {
@CapabilityInject
public static final Capability<IItemHandler> CAPABILITY;
static {
CAPABILITY = null;
}
public void doStuff() {
// No warning
Capability<IItemHandler> capability = CAPABILITY;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.