2013-03-28 31 views
1

我有一个ArrayList“list”,其中包含一个值true。然而,当我写:如何在处理中从ArrayList中获取布尔值

if (list.get(0)==true)

我得到错误“不兼容的操作对象类型和布尔”。 ArrayList.get()方法总是返回object?如果是这样,我怎么能得到boolean值?

谢谢。

回答

5

如果您的列表始终包含布尔值,我建议您键入的ArrayList布尔

List<Boolean> list = ArrayList<Boolean>(); 

而且现在你可以做你想做的事情了:

if (list.get(0)) 

有关信息:

if (list.get(0)==true)if (list.get(0))和是相同的。

,如果你不能使用泛型,你可以投

if((Boolean) list.get(0)) 
{ 
    System.out.println("OK"); 
} 
+0

谢谢大家!( - : – user1767774

2

是的,ArrayList存储对象,它不能知道类,除非你使用泛型。

所以你有两个选择:泛型或铸造每个“获得”。

拥有铸造:

if (((Boolean)list.get(0))==true) { ... } 

有了泛型,宣布名单如下:

List<Boolean> list= new ArrayList<>(); 
list.add(true); 

if (list.get(0)) { // list.get(0)==true is unnecesary 
... 
} 
+0

谢谢大家! ( - : – user1767774

2

你可以尝试创建一个变种,以验证“如果”声明将是真实的是这样的:

for(int i = 0; i < aList.size();i++){ match = aList.get(i).equals("Red"); System.out.print(match); }

的匹配变量将接收此比较的布尔值。

Regards,

Otacon。