澜色海湾 2023-02-14 16:28 采纳率: 87.5%
浏览 25
已结题

为啥 Object 类型可以强转成 Object[ ]类型,而 String 类型 却没法强转成 String[ ]类型呢?

最近在用 Hibernate 级联查询之后需要将数据查出来先转换成 Object[ ]类型,然后重新封装到实体类的时候遇到个问题 -> 为啥 Object 类型可以强转成 Object[ ]类型,而 String 类型 却没法强转成 String[ ]类型呢?

前面代码省略...........
        Query query = session.createQuery("......");  // hql 查询语句省略......
        
        List<String> list1 = query.list();
        String[ ] stringArr =  (String[ ])list1.get(0);  **//报错 - String 无法转换成 String[ ] 类**

        List<Object> list2 = query.list();
        Object[ ] objectsArr = (Object[ ])list2.get(0);
  • 写回答

3条回答 默认 最新

  • 量化研究所 2023-02-14 19:14
    关注

    Java 中的类型转换通常需要遵循类型兼容性的原则。在这个原则下,一个数据类型可以强制转换为另一个数据类型,但是必须满足以下条件之一:

    目标类型是源类型的子类;
    目标类型和源类型都是原始类型,且它们之间可以自动转换;
    目标类型和源类型都是引用类型,且它们之间存在转换关系。
    对于 Object 类型,它是所有 Java 对象的基类,因此可以强制转换为任何其他对象类型,包括 Object[]。但是对于 String 类型,它是一个 final 类型,即不可变类型,因此不能将其转换为 String[]。

    上面的代码中,List list1 获取的是一个字符串列表,因此不能直接将其强制转换为 String[] 类型。而 List list2 获取的是一个对象列表,由于 Object 是所有 Java 对象的基类,因此可以将其强制转换为 Object[] 类型,但在后续的代码中,需要将其转换为实际需要的类型,如 String 等。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月24日
  • 已采纳回答 2月16日
  • 创建了问题 2月14日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭