为什么IntelliJ IDEA认为我的布尔方法总是被反转?

Seb*_*oek 8 java intellij-idea

我是使用IntelliJ Idea的新手,我有以下代码:

private boolean verifyToken(TokenTypeEnum expectedTokenType, Token token) {
        return token != null &&
               token.getTokenType() == expectedTokenType &&
               token.getExpiryDate().isAfter(Instant.now());
}
Run Code Online (Sandbox Code Playgroud)

现在,IntelliJ-IDEA抱怨这个布尔方法总是被反转.但我特意写了这个方法,所以它返回一个正面,我不想让方法isInvalidToken或类似的东西.我认为这个警告的重点实际上是为了避免那些负面因素.

更重要的是,如果我实际让IntelliJ自动反转方法,它会使这样的表达式完全不是我想要的,因为它更难以推理(即使我会重写日期比较)

private boolean newNegativeMethod(TokenTypeEnum expectedTokenType, Token token) {
        return token == null ||
               token.getTokenType() != expectedTokenType ||
               !token.getExpiryDate().isAfter(Instant.now());
}
Run Code Online (Sandbox Code Playgroud)

它为什么这样做?我当然可以禁用警告,但我不愿意.

yol*_*ole 14

"始终倒置"意味着在所有调用方法的地方,!运算符应用于调用表达式.IntelliJ IDEA无法从语义的角度来理解这是难的还是容易理解的; 它只是执行语法分析.如果您认为反转方法会使代码更难理解,只需禁止检查此方法.

  • @SuppressWarnings(“ BooleanMethodIsAlwaysInverted”) (7认同)