为什么 IntelliJ 有时会抛出未使用的警告但有时不会?

Why does IntelliJ sometimes throw an unused warning but sometimes not?

我有很多 Java classes 有两个构造函数:

  1. 一个没有参数的私有构造函数,并且 gson 调用了未使用的警告抑制;
  2. 一个 public 带参数的构造函数。

在一个 class 中,IntelliJ 警告我从未使用过 public 构造函数。在所有其他 classes 中没有警告,但如果我为该方法单击 Find Usage,它会显示“在项目文件中找不到任何内容”。

为什么在某些情况下有警告,而在其他情况下却没有?我怎样才能使 IntelliJ 始终以相同的方式运行?

这是 class 构造函数在其中 public 抛出警告:

public class ShopMarketAction extends Action {

    private Boolean inRow = null;
    private Integer index = null;

    @SuppressWarnings("unused") // Called by gson
    private ShopMarketAction() {
        super(ActionType.SHOP_MARKET);
    }

    // THIS METHOD THROWS AN UNUSED WARNING
    public ShopMarketAction(boolean inRow, int index) {
        super(ActionType.SHOP_MARKET);
        this.inRow = inRow;
        this.index = index;
    }

}

这是一个 class 示例,其中 public 构造函数没有抛出警告:

public class ProductionAction extends Action {

    private Integer cardIndex = null;

    @SuppressWarnings("unused") // Called by gson
    private ProductionAction() {
        super(ActionType.PRODUCE);
    }

    // THIS METHOD DOESN'T THROW THE WARNING BUT IS NEVER USED
    public ProductionAction(int cardIndex) {
        super(ActionType.PRODUCE);
        this.cardIndex = cardIndex;
    }

}

我指定在两个 classes 中该方法尚未使用。

两个class扩展的动作class:

public abstract class Action {

    @SuppressWarnings({"unused", "FieldCanBeLocal"})
    private final ActionType type; // Used by gson

    protected Action(ActionType type) {
        this.type = type;
    }

}

ActionType 枚举:

public enum ActionType {
    SHOP_MARKET, PRODUCE;
}

我找到了导致问题的原因:我有一个非 Java 文件(由另一个应用程序创建的 UXF 文件),其中包含所有这些方法的名称,出于某种原因,IntelliJ 认为它们已被使用,因为这个。