我有一个ArrayList
,“列表”,其中包含一个值,true。但是,当我写道:
if (list.get(0)==true)
我收到错误“不兼容的操作数类型对象和布尔值”。 ArrayList.get()
方法始终返回object
吗?如果是这样,我怎样才能获得boolean
值?
感谢。
答案 0 :(得分:5)
如果你的列表总是包含布尔值,我建议你将你的arraylist键入boolean
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");
}
答案 1 :(得分: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
...
}
答案 2 :(得分:2)
您可以尝试创建一个var来验证“if”语句是否为true,如下所示:
for(int i = 0; i < aList.size();i++){
match = aList.get(i).equals("Red");
System.out.print(match);
}
匹配变量将接收此比较的布尔值。
此致
Otacon。