【问题标题】:Casting an object into boolean throwing Exception将对象转换为布尔抛出异常
【发布时间】:2013-08-02 04:34:25
【问题描述】:

我正在从休眠本机查询中获取数据,该数据属于 Object 类型 我需要将其转换为布尔值,我正在这样做..

Boolean b = ((java.lang.Boolean) ((Object[]) object)[++i]);

现在我需要将它设置为 pojo 有一个方法为 ..

public void setActive(boolean active)
 { this.active = active; }

当我尝试进入 pojo 时,它会抛出异常

 b1.setActive(b);

请指教

【问题讨论】:

  • 有什么异常?另外,b1 是一个 Boolean,它没有 setActive 方法。

标签: java boolean


【解决方案1】:

我认为你只是把你的变量弄错了。你应该打电话给b.setActive(b1);。 Boolean 对象没有 setActive 方法,您可能在错误的对象上调用它。

如果您遇到转换问题,则在您调用任何方法之前将对象转换为布尔类型时会引发异常。

【讨论】:

  • 抱歉有一个拼写错误,现在请查看更新后的帖子
  • 好吧,在修正错字之后,我认为最好让我们知道您遇到的异常是什么。 :) 不知道可能出了什么问题。
【解决方案2】:
  1. 使用 getter (b.booleanValue())。
  2. 自动装箱和拆箱对空值敏感
Boolean b = null;
boolean p =  b; //throws NPE

【讨论】:

    【解决方案3】:

    使用b1.setActive(b!=null?b.booleanValue():false)

    Boolean 类具有返回布尔值的 booleanValue() 方法。

    确保objectboolean[]

    【讨论】:

    • 自动装箱真的需要b.booleanValue()吗?你应该尽量避免否定(if (x!=y) { } else { })所以更易读的方式可能是b1.setActive(b==null?false:b);
    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多