簡體   English   中英

禁用IntelliJ IDEA中的“恆定條件和例外”檢查字段

[英]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 ConstantConditionsnull -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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM