为什么 IntelliJ 有时会抛出未使用的警告但有时不会?
Why does IntelliJ sometimes throw an unused warning but sometimes not?
我有很多 Java classes 有两个构造函数:
- 一个没有参数的私有构造函数,并且 gson 调用了未使用的警告抑制;
- 一个 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 认为它们已被使用,因为这个。
我有很多 Java classes 有两个构造函数:
- 一个没有参数的私有构造函数,并且 gson 调用了未使用的警告抑制;
- 一个 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 认为它们已被使用,因为这个。