Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么IntelliJ IDEA认为我的布尔方法总是颠倒的,而事实并非如此?_Java_Intellij Idea - Fatal编程技术网

Java 为什么IntelliJ IDEA认为我的布尔方法总是颠倒的,而事实并非如此?

Java 为什么IntelliJ IDEA认为我的布尔方法总是颠倒的,而事实并非如此?,java,intellij-idea,Java,Intellij Idea,我不熟悉使用IntelliJ Idea,我有以下代码: private boolean verifyToken(TokenTypeEnum expectedTokenType, Token token) { return token != null && token.getTokenType() == expectedTokenType && token.getExpiryDate().i

我不熟悉使用IntelliJ Idea,我有以下代码:

private boolean verifyToken(TokenTypeEnum expectedTokenType, Token token) {
        return token != null &&
               token.getTokenType() == expectedTokenType &&
               token.getExpiryDate().isAfter(Instant.now());
}
现在IntelliJ IDEA抱怨这种布尔方法总是反向的。但是我特别编写了这个方法,所以它返回一个正的值,我不想让一个方法isInvalidToken或者类似的东西。我相信这一警告的目的实际上是为了避免像这样的负面影响

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


为什么要这样做?当然,我可以禁用警告,但我不想禁用。

始终反转”意味着在调用该方法的所有地方,都会禁用!运算符应用于调用表达式。IntelliJ IDEA不知道从语义的角度来说这是困难还是容易推理;它只是执行语法分析。如果您认为反转该方法会使代码更难理解,只需抑制对该方法的检查。

我有一个用例,每当紧急情况激活时,我需要一个视图(android项目)

我将此视图称为紧急视图:

公共类EmergencyView扩展了RelativeLayout{
私有布尔紧急活动;
...
公共布尔值isEmergencyActive(){
返回紧急激活状态;
}
}
在这个用例中,我得到了getter的
BooleanMethodIsAlwaysInverted
警告。如果我将getter方法的名称更改为
isEmergency
,警告就会消失,因此这里检查的不仅仅是代码的语义

最初,我使用
@SuppressWarnings(“BooleanMethodIsAlwaysInverted”)
来隐藏此警告,但最终我决定将字段的名称更改为
emergency


问题仍然是,“紧急激活”还是简单的“紧急”是描述名为
EmergencyView
的视图功能状态的最佳方式,但我不再收到此警告,也不必抑制它。

ohhh这就是它的意思。是的,该方法在调用方法时用作“快速退出”,类似于if(x==null)return之类的保护。哦,好吧……你们怎么阻止这次检查?我在IDE的灯泡菜单下看不到它,也找不到/猜不到SuppressWarning的神奇字符串。@SuppressWarnings(“BooleanMethodIsAlwaysInverted”)
private boolean newNegativeMethod(TokenTypeEnum expectedTokenType, Token token) {
        return token == null ||
               token.getTokenType() != expectedTokenType ||
               !token.getExpiryDate().isAfter(Instant.now());
}