将Object转换成List

将Object转换成Listjava 中如果需要将一个 object 转成 list 大部分人会直接使用强制类型转换 List String obj 这样 这样强制转换编译会提示 Uncheckedcas java lang Object to java util List java lang String 编译器的意思该强制类型转换并未做类型校验 强制转换并不安全 可能会抛出异常导致程序崩 java lang String String

java中如果需要将一个object转成list,大部分人会直接使用强制类型转换:(List

) obj
这样。这样强制转换编译会提示Unchecked cast: 'java.lang.Object' to 'java.util.List

'
,编译器的意思该强制类型转换并未做类型校验,强制转换并不安全,可能会抛出异常导致程序崩溃。在很多博客中有人会建议用@SuppressWarnings("unchecked")解决编译器警告,这种方法是极为不妥的,因为它只是用来告诉编译器忽略警告,而警告却实实在在的存在。
正确的做法如下:

public static Object getObj() { List 
  
    list = new ArrayList<>(); list.add("1"); list.add("ab"); return list; } public static void main(String[] args) { Object obj = getObj(); List 
   
     result = new ArrayList<>(); if (obj instanceof ArrayList 
    ) { for (Object o : (List 
    ) obj) { result.add(String.class.cast(o)); } } result.forEach(System.out::println); // 输出:1 ab } 
    
  

Main主函数中的 Object obj模拟了List对象。后续的代码首先判断obj是否是List类型,然后使用Class.cast做类型转换

如果你想使用更方便的方法,可以直接调用下面的函数。

public static 
  
    List 
   
     castList(Object obj, Class 
    
      clazz) { List 
     
       result = new ArrayList 
      
        (); if(obj instanceof List 
       ) { for (Object o : (List 
       ) obj) { result.add(clazz.cast(o)); } return result; } return null; } 
       
      
     
    
  
public static void main(String[] args) { Object obj = getObj(); List 
  
    list = castList(obj, String.class); list.forEach(System.out::println); } 
  

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199828.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:07
下一篇 2026年3月20日 下午12:07


相关推荐

  • SQL Server 中关于EXCEPT和INTERSECT的使用方法

    SQL Server 中关于EXCEPT和INTERSECT的使用方法

    2021年11月30日
    43
  • Mac os 查看PDM文件[通俗易懂]

    MacOS没有查看PDM文件的工具,PowerDesigner只有windows版本,无Mac版,在Mac上查看PDM文件非常不方便,或者装双系统,非常麻烦,现在有了ParsePDM工具,就不用担心了.ParsePDM需要依赖JDK1.7,机器如果没有安装,请到官网下载相应的版本,进行安装.下载连接:http://download.

    2022年4月12日
    272
  • EditPlus工具添加XML格式化插件[通俗易懂]

    EditPlus工具添加XML格式化插件[通俗易懂]   使用EditPlus打开XML文档,发现文件内容没有格式化,非常难看,使用IE浏览器打开这些XML文档是格式化的,但是IE浏览器却不能编辑。   在网上找了一些资料发现能够通过一个小插件“xmlstarlet”来实现EditPlus格式化XML文档。具体步骤如下:   1. 在http://xmlstar.sourceforge.net/down…

    2022年7月16日
    43
  • Oracle列转行函数 Listagg() 语法详解及应用实例「建议收藏」

    Oracle列转行函数 Listagg() 语法详解及应用实例「建议收藏」工作中用到一段比较复杂的SQL查询脚本,使用了listagg()函数实现了具有多个值的字段的填充(即,列表聚合,listaggregation(我猜的))。说简单点,listagg()函数可以实现多列记录聚合为一条记录,从而实现数据的压缩、致密化(datadensification)。以下内容转载自http://dacoolbaby.iteye.com/blog/1698957,SQL脚本做了…

    2025年8月29日
    11
  • 知识变现海哥|知识变现五大赛道,你选哪一道?

    知识变现海哥|知识变现五大赛道,你选哪一道?知识变现的方式和渠道很多 很多人想开始自己的知识变现之路 不知道如何开始操作 看别人通过知识变现赚了钱 也想加入知识变现行业 却不知如何开始起步 开始知识变现之前 第一步 就要明确适合自身优势的变现方式 分析自己的优势 知道个人擅长什么渠道 才能发挥个人优势 长期做下去 在知识变现的路上才能顺利前行 每个人的优势不一样 有的人善于写 有人善于说 有的人喜欢分享有人善于沟通 这就要根据每个人的优势特长 选择不同的知识变现赛道 目前 知识变现有五大最常见的赛道

    2026年3月20日
    2
  • 平衡二叉树AVL删除

    平衡二叉树AVL删除

    2021年9月14日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号