【问题标题】:Using an object in an if statement... (Android)在 if 语句中使用对象... (Android)
【发布时间】:2010-04-25 17:31:44
【问题描述】:

我有一个对象变量Object test = Spinner.getSelectedItem(); - 它从 Spinner (称为 spinner) 中获取选定的项目并将项目命名为“测试”

我想做一个与该对象相关的 if 语句,例如:

'if (test = "hello") {
//do something
}'

但它似乎不起作用。我必须使用不同的 if 吗?或将对象转换为字符串等?

【问题讨论】:

    标签: java android object if-statement


    【解决方案1】:

    声明:

    test = "hello"
    

    是将字符串“hello”分配给变量 test - 它不进行比较。

    test == "hello"
    

    是一个比较,但仍然可能不起作用,因为它比较引用。碰巧都是“hello”的两个不同的字符串实例可能不是相同的引用,因此该语句可能是错误的。

    试试:

    "hello".equals( test )
    

    【讨论】:

      【解决方案2】:

      如果要比较字符串,使用equals()

      if ("hello".equals(test))...
      

      【讨论】:

      • .equals 比较对象,而不是字符串。来自 Object 的 java 文档 boolean equals(Object obj) 指示其他对象是否“等于”这个对象。由 String 类继承。
      • @Tom:当然。我只是想让 James 确保他正在比较一个字符串和一个字符串(这取决于他的 Spinner 中项目的类型)。否则,他可能只会收到错误的值。
      【解决方案3】:

      测试一个字符串并将getSelectedItem()的结果转换为一个字符串

      string test = (string)Spinner.getSelectedItem();
      if (test == "hello") 
      {
          //Do something
      }
      

      【讨论】:

        【解决方案4】:

        说 test.equals("hello") 我不喜欢它在我的编码风格中看起来不正确的另一种方式也是有效的。

        【讨论】:

        • 但是,您必须以这种方式添加额外的空检查。当未选择任何内容时,AdapterView#getSelectedItem 返回 null。
        • 我一直讨厌这种推理。我更喜欢始终明确地处理 null 情况,以便清楚地知道我期望 null 或者我不期望 null,而不是冒着意外丢失逻辑上不应该发生的 null 的风险。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-02
        • 2016-10-19
        • 2020-12-08
        相关资源
        最近更新 更多