类型不匹配:无法从整数转换为布尔值

13 java android type-conversion

public boolean clearSelection() {
    int i = 0;
    if (!this.m_SelectedComps.isEmpty()) {
        i = 1;
        Iterator localIterator = this.m_SelectedComps.iterator();
        while (localIterator.hasNext())
            ((AnnotComponent) localIterator.next()).remove();
        this.m_SelectedComps.clear();
    }

    return i;
}
Run Code Online (Sandbox Code Playgroud)

如何将整数转换为布尔值?

Hog*_*gan 42

尝试使用此返回

return i == 1;
Run Code Online (Sandbox Code Playgroud)

或者只是使用布尔值来启动(使用更好的名称):

 public boolean clearSelection()
  {
    boolean flag = false;
    if (!this.m_SelectedComps.isEmpty())
    {
      flag = true;
      Iterator localIterator = this.m_SelectedComps.iterator();
      while (localIterator.hasNext())
        ((AnnotComponent)localIterator.next()).remove();
      this.m_SelectedComps.clear();
    }
    return flag;
  }
Run Code Online (Sandbox Code Playgroud)

它继续使我迷惑为什么人们使用i- 一个可怕的变量名称.看起来1并没有传达任何意义.

  • 关于`i`:"计算机科学中只有两件事:缓存失效和命名事物" - Phil Karlton (12认同)
  • IMO`i`来自"迭代","迭代器" (4认同)
  • @Hogan不确定你使用的是哪种字体,它确实在我的IDE中看起来不像是`1` (2认同)

Pri*_*shi 16

也许你可以修改你的return语句而不需要对代码进行太多更改,如下所示:

return i > 0 ? true : false ;
Run Code Online (Sandbox Code Playgroud)

  • 三元运算符是多余的.编写`return i> 0;`就足够了. (15认同)

tbr*_*aun 14

我知道这个帖子已经老了但是想添加一些帮助我的代码并且可能会帮助其他人搜索这个...

您可以使用org.apache.commons.lang api使用BooleanUtils类将int转换为boolean:

BooleanUtils.toBoolean(int value)
Run Code Online (Sandbox Code Playgroud)

"使用零为false的约定将int转换为布尔值." (Javadoc中)


以下是Maven和Gradle依赖项,请确保您在链接http://mvnrepository.com/artifact/org.apache.commons/commons-lang3上查看是否使用了最新版本

Maven依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Gradle依赖:

'org.apache.commons:commons-lang3:3.4'
Run Code Online (Sandbox Code Playgroud)


Fil*_*nov 5

将 int 转换为布尔值:

return i > 0;
Run Code Online (Sandbox Code Playgroud)