You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知Object为对应包装类实例且非空,两种场景下转基本类型是否安全?

两种Object转基本类型场景的安全性分析

场景1

Object obj = ???; // unknown value for obj
boolean b;

if (obj != null && obj instanceof Boolean) 
    b = (boolean) obj; 

这段代码始终安全。原因如下:

  • 先通过obj != null排除空指针风险,再用obj instanceof Boolean确保obj是Boolean类型实例——由于Boolean是final类,不存在子类,这个判断和obj.getClass() == Boolean.class效果完全一致。
  • 将Boolean对象强制转为boolean基本类型时,Java会自动执行拆箱操作,把包装类对象转换成对应的基本类型值,不会抛出类型转换异常。

场景2

Object obj = ???;
float f;

if (obj != null && obj.getClass().equals(Float.class))
    f = (float) obj;

这段代码始终安全。理由如下:

  • obj != null避免了空指针,obj.getClass().equals(Float.class)精准判定obj的类型就是Float(Float是final类,没有子类,不会出现子类匹配的误判)。
  • 将Float对象强制转为float基本类型时,Java会自动拆箱,把包装类对象转换为对应的基本类型数值,不会出现类型转换错误。

内容的提问来源于stack exchange,提问作者labradorEater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 06:05:02