【问题标题】:How to cast Object to boolean?如何将对象转换为布尔值?
【发布时间】:2010-02-05 10:47:01
【问题描述】:

如何将 Java 对象转换为布尔原语

我尝试了下面的方法,但它不起作用

boolean di = new Boolean(someObject).booleanValue();

构造函数 Boolean(Object) 未定义

请指教。

【问题讨论】:

    标签: java casting primitive


    【解决方案1】:

    如果对象实际上是一个Boolean 实例,那么只需转换它:

    boolean di = (Boolean) someObject;
    

    显式转换将转换为Boolean,然后自动取消装箱到原始值。或者你可以明确地这样做:

    boolean di = ((Boolean) someObject).booleanValue();
    

    如果someObject 不引用布尔值,您希望代码做什么?

    【讨论】:

    • 不,它不是布尔实例,但其值为真或假
    • 我很好奇变量是什么类型... :)
    • 假设 true / false 是您可以使用的字符串: boolean b = Boolean.parseBoolean(String.valueOf(someObject));请注意,这将为除“true”(不区分大小写)之外的任何字符串值返回 false,因此如果 someObject 为 null,则将返回 false。
    • @Jon 回答您在最后一行提出的问题,我们可以在将其转换为布尔值之前使用instanceOf 方法。这不会给出转换异常。
    • @vikiiii:我知道 instanceof,但这是如何我们可以检查它的问题 - 这不能回答我提出的问题,这是想要的行为.
    【解决方案2】:

    假设yourObject.toString()返回“true”或“false”,你可以试试

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

    【讨论】:

    • 无法理解为什么需要 toString()。如果它不是一个字符串那么它只是一个对象?
    • 因为 yourObject 是 Object 类型的实例,而 valueOf 方法接受一个字符串。
    • 这应该是 Boolean.parseBoolean 以避免装箱和拆箱 Boolean
    【解决方案3】:

    使用条件运算符“?”像下面这样:

    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 不是对象类型,当然也不是 arbitrary 对象类型,2) 这不是强制转换。真正的问题是最初的问题没有意义,OP从来没有费心澄清它。
    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2019-03-17
    • 1970-01-01
    • 2018-12-02
    • 2012-06-08
    相关资源
    最近更新 更多