如何将存储布尔值的Object类型与boolean类型进行比较?
解决Object与boolean类型比较的报错问题
你的代码报错是因为Object类型变量存储的是装箱后的Boolean对象,直接和基本类型boolean用==比较时,Java编译器无法确定Object的实际类型,因此提示类型不兼容。以下是几种可行的解决方式:
方式一:强制类型转换后比较
先将Object强制转换为Boolean类型,再与boolean值比较:
import java.util.HashMap; public class file{ public static void main(String args[]){ Object a; a = true; // 强制转换为Boolean后比较 if ((Boolean)a == true){ System.out.println("Yes"); } } }
注意:如果a实际存储的不是Boolean类型,这种写法会抛出ClassCastException,适合确定a一定是Boolean的场景。
方式二:先判断类型再比较
先通过instanceof判断变量类型,再转换比较,避免类型转换异常:
import java.util.HashMap; public class file{ public static void main(String args[]){ Object a; a = true; // 先判断类型,再转换比较 if (a instanceof Boolean && (Boolean)a){ System.out.println("Yes"); } } }
方式三:使用Boolean.TRUE.equals()比较
这种方式最安全,既可以避免类型转换异常,也能处理a为null的情况:
import java.util.HashMap; public class file{ public static void main(String args[]){ Object a; a = true; // 使用Boolean的equals方法比较 if (Boolean.TRUE.equals(a)){ System.out.println("Yes"); } } }
内容的提问来源于stack exchange,提问作者fahadhub
相关产品推荐
相关产品推荐

