1

我有一个ArrayList“列表”,它包含一个值,true。但是,当我写:

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

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

谢谢。

4

3 回答 3

5

如果您的列表始终包含布尔值,我建议您将数组列表键入为布尔值

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");
}
于 2013-03-28T15:48:07.540 回答
2

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

所以你有两个选择:泛型或强制每个“get”。

带铸造:

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

使用泛型,将列表声明为:

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

if (list.get(0)) { // list.get(0)==true is unnecesary
...
}
于 2013-03-28T15:46:38.643 回答
2

您可以尝试创建一个 var 来验证“if”语句是否为真,如下所示:

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

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

问候,

奥塔康。

于 2013-03-28T15:48:45.747 回答