如何将对象转换为布尔值?

92
如何将Java对象转换为布尔原语?我尝试了下面的方法,但它并不起作用。
boolean di = new Boolean(someObject).booleanValue();

构造函数Boolean(Object)未定义

请建议。

3个回答

152
如果对象实际上是 Boolean 实例,那么只需将其转换:
boolean di = (Boolean) someObject;
显式转换将进行到Boolean的转换,然后自动解包回原始值。或者您可以显式地执行此操作:
boolean di = ((Boolean) someObject).booleanValue();

如果someObject不是一个布尔值,你希望代码做什么?


1
不,它不是一个布尔实例,但它的值可以是真或假。 - Ravi Gupta
3
我对变量的类型很好奇... :) - helios
15
假设true/false是字符串,你可以使用以下代码:boolean b = Boolean.parseBoolean(String.valueOf(someObject)); 注意,这将对除了不区分大小写的"true"以外的任何字符串值返回false,并且如果someObject为null,它也会返回false。 - Adamski
1
@Jon 对于你在最后一行提出的问题的答案,我们可以在将其转换为布尔值之前使用 instanceOf 方法。这样就不会出现转换异常。 - vikiiii
@vikiiii:嗯,它回答了部分问题。但如果该值实际上是一个整数、按钮或文件输入流,你想要发生什么并没有得到解答。当然,我是在问原帖作者... - Jon Skeet
显示剩余2条评论

38

假设你的Object对象的toString()方法返回"true"或者"false",你可以尝试使用下面的代码:

boolean b = Boolean.valueOf(yourObject.toString())

1
有困难理解为什么需要 toString()。如果它不是字符串,那么它只是一个对象? - James P.
2
因为yourObject是Object类型的实例,而valueOf方法接受一个字符串。 - Neets
2
这应该使用Boolean.parseBoolean来避免装箱和拆箱一个Boolean - Ben Lings

-2
请使用条件运算符“?”,如下所示:
int a = 1;   //in case you want to type 1 or 0 values in the constructor call 
Boolean b;   //class var.
b=(a>0?true:false);   //set it in the constructor body

是的。但这并不是OP所要求的。1)int不是一个对象类型,当然也不是任意对象类型,2)这不是一个转换。真正的问题是原始问题没有意义,而OP从未费心澄清它。 - Stephen C
不是真正的问题 - mannuk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接