2010-04-25 20 views
1

我有一个对象变量Object test = Spinner.getSelectedItem(); - 它会从微调器(称为微调)所选择的项目和名称的项目“测试”在使用对象if语句...(安卓)

我想做与该物体如if语句:

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

但它似乎没有工作....

有人可以给我一些帮助吗? - 我必须使用不同的if?或将对象转换为字符串等?

非常感谢......

詹姆斯

回答

7

声明:

test = "hello" 

是字符串 “hello” 的可变测试的任务 - 它不会做一个比较。

test == "hello" 

是一个比较,但仍然可能无法正常工作,因为它比较参考。碰巧是“hello”的两个不同字符串实例可能不是同一个引用,因此该陈述可能是错误的。

尝试:

"hello".equals(test) 
+0

好的,谢谢...... *现在就试试吧...... * – 2010-04-25 17:38:58

+0

那正是我所需要的,谢谢:) – 2010-04-25 17:42:49

5

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

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

.equals比较对象,而不是字符串。从Object 的java文档布尔型\t equals(Object obj) 指示某个其他对象是否“等于”这一个。 它由String类继承。 – 2010-04-25 17:42:05

+0

这正是我需要的感谢:) – 2010-04-25 17:42:17

+0

@汤姆:当然。我只是希望詹姆斯确保他将一个字符串与一个字符串进行比较(这取决于他的Spinner中的项目类型)。否则,他可能只会收到错误的值。 – 2010-04-25 19:18:27

0

制作测试一个字符串,并投getSelectedItem()的结果为字符串

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

我试过,出于某种原因,没有工作=/ – 2010-04-25 17:43:39

0

在说test.equals(“你好”)时也是有效的我不'像另一种方式,它不符合我的编码风格。

+0

但是你必须添加一个额外的空检查。当没有选择任何东西时,AdapterView#getSelectedItem返回null。 – 2010-04-25 20:05:09

+0

我总是讨厌这种推理。我更愿意总是明确地处理空案例,以便清楚地表明我期望为null,或者我不期望为null,而不是运行意外丢失不应该逻辑发生的空值的风险。 – TofuBeer 2010-05-09 05:16:37