java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

Cause: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long错误的详细解决方法 阅读详情

来源:http://prideafrica.blogspot.com/2007/01/javalangclasscastexception.html


Very simply, you get the exception

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
when you try to cast an array kind of a class to the linear type. In this case, attempting to cast String -> String[] or vice versa will cause the JVM to throw this particular exception at runtime. Compilers cannot catch this oversight.
As an example, consider an attempt to read all parameters passed to a servlet using the request object. The parameter map can be obtained with:
Map parameters = request.getParameterMap();

From HTML basics, we know that parameters are passed as key/value pairs of Strings to the web server, so the temptation is to assume that the generics mapping for parameters is <String, String>. In fact, compilers will allow you to use this generic:
Map<String,String> parameters = request.getParameterMap();
for(String key: parameters.keySet()) {
String value = parameters.get(key); // error happens here
System.out.println(key + "=" + value);
}

This code snippet will compile and run fine, producing results that look like:
firstName=[Ljava.lang.String;@1fe49b5
lastName=[Ljava.lang.String;@1993b4f
This is assuming parameters passed to the servlet (or JSP) include ones named 'firstName' and 'lastName', of course.

As it turns out, the value side of the parameter map is actually a String[] type. So the proper generic for this map is <String, String[]>. When you call request.getParameter("firstName");, it simply returns the equivalent of parameters.get(key)[0];, which reads the first value associated with the key. This happens even if your form might have sent single-dimension parameters for processing.
So, just remembering the map's generics mapping may save you a lot of headaches down the road. This is simple Java internals - but a look at forums on the web shows how much of a problem this is for programmers out there. You's get the same kind of exception if you attempted to cast Date to Date[] (which would throw java.lang.ClassCastException: java.util.Date cannot be cast to [Ljava.util.Date;
【异常】Java ClassCastException: cn.hutool.json.JSONArray cannot be cast to [Ljava.lang.String; 直接类型转换风险:Java 中不兼容类型无法直接转换JSON 库差异:不同 JSON 库的对象类型不同数据格式变化:系统演进过程中数据类型可能发生变化。 阅读详情

相关推荐

自动驾驶系统架构解析:从传感器到决策控制的完整链路(附实际案例)

本文深入解析了自动驾驶系统从感知、决策到控制的完整架构链路。通过对比摄像头、毫米波雷达、激光雷达等核心传感器的特性与选型策略,阐述了多传感器融合的必要性。文章结合行为决策、运动规划及控制执行的实际案例,揭示了系统集成、数据闭环与功能安全等工程化落地的关键挑战,为理解自动驾驶技术提供了清晰的蓝图。

weixin_29051811的博客 339

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer

数据库查出来Map<String,String> map map.put(‘ss’,222); 去除数据转 int 报错 java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer 解决方法: 1.先转String,再转想要的类型:String str = String.valueOf(vo.get(“id”)); 2.Integer.parseInt(map.get(“id”).toStr

fanzhi16的博客 9454

openai联合创始人用1000行纯C语言手搓的GPT-2训练代码

不久之前,特斯拉前 AI 总监、OpenAI 联合创始人 Andrej Karpathy 在社交媒体平台 X 上高调宣布,他友好地从 OpenAI 离职,未来将专注于“个人项目”,而后又口口声声说要尝试性地戒掉上网两周,去了 Bhutan(不丹王国)休假。然后就手搓如下代码,我们一起来欣赏.这段代码是一个GPT-2模型的训练实现,包括前向传播、后向传播、参数更新等过程。代码中包含了注释,解释了每个函数和代码块的作用。此外,还有一些辅助函数和结构体,用于数据加载、随机数生成和模型的初始化与释放。这个训练循环还

zhangzhechun的专栏 1212

java.lang.Long cannot be cast to java.lang.String解决方法

1.字面意思很简单,类型转换问题 2.出现问题背景:传两个日期参数是Long型的,对应的是Mysql中的两个字段,类型bigint,用的mybatis,贴代码 这代码看起来木有错啊!百思不得其解 3.解决方法:看了很多帖子,发现有种见解,就算mysql里面是没有泛型的,包装类通过mybatis传入数据库的时候因为没有找到相应的类型会被解析成Object,关键是Object强转成相应类型的时候,问题...

javaXingzhe的博客 4万+

实战解析:利用Python requests库高效抓取京东商品评论并构建结构化数据集

本文详细介绍了如何利用Python requests库高效抓取京东商品评论并构建结构化数据集。通过分析京东评论接口、处理反爬机制以及数据解析存储,帮助开发者快速获取电商数据,适用于竞品监控、用户画像构建等商业场景。

weixin_42526415的博客 837

CAD制图

CAD制图可以提高设计效率和准确性,并方便文档的存档和交流,是现代工程设计中不可或缺的一部分。·CAD三维开发是指使用计算机程序和工具来创建、编辑和操作三维模型、图形和设计的过程。它在工程、建筑、制造和游戏等领域广泛应用。CAD三维开发可能涉及到复杂的图形算法、性能优化、并行计算等方面的内容,因此需要深入学习和实践,以提高开发的效率和质量。

RZer的博客 1651

解决Java ,class java.lang.String cannot be cast to class java.lang.Integer

[TOC](解决 java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module java.base of loader ‘bootstrap’))将parameterType 改为传入参数类型即可,比如我传入的类型是String,就改为String。...

qq_46416934的博客 6335

【算力网络】算力知识

尽管算力这个词在近年来很“火”,但其背后的含义,却很少有人真正了解

qq_42809645的博客 1万+

【ERROR】java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

错误:java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String 原因:String[]强制转换为String出现异常  [ Ljava.lang.String 带[表示是数组 数组类型打印测试: String[] a = new String[]{}; int[] b = ne

优秀是一种习惯 2143

三菱FX5U PLC与CCLINK模块通信配置全流程(附接线图与参数详解)

本文详细解析了三菱FX5U PLC与CCLINK模块的通信配置全流程,包括硬件接线规范、参数设置及软件编程方法。通过实战指南帮助工程师快速掌握FX5U与CCLINK模块的高效通信技术,提升工业自动化控制系统的稳定性和可靠性。

weixin_27014595的博客 430

基于强化学习的工业SCR脱硝系统控制算法设计与实现

本文提出了一种基于强化学习的工业SCR脱硝系统智能控制方法。针对SCR系统存在的非线性、大滞后和多变量耦合等控制难点,研究采用混合建模方法构建了精度在5%以内的系统模型,并设计了专门的强化学习环境。该方法通过定义合理的动作空间和状态空间,结合物理约束设计损失函数,利用深度强化学习算法优化氨喷射控制策略。相比传统PID控制,该智能控制器能更好地适应烟气参数波动,实现NOx排放的稳定控制,为工业环保设施提供了更优的自动化解决方案。

huanghm88的专栏 1456

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

在运行时result = jedis.rpush(key, (String[])value.toArray()); 报了[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;这个错后来发现是强转的问题,java中的强制类型转换只是针对单个对象的,想要偷懒将整个数组转换成另外一种类型的数组是不行的,,这和数组初始化时需要一个个来...

corleone_4ever的博客 1万+

这才是 Python 的正确玩法!用强化学习 (RL) 训练 AI 玩《王者荣耀》,胜率 90%!

大家打排位时,一定遇到过那种“意识神级、操作零失误”的对手,或者“走位呆滞、送人头”的队友。以前的“人机”是程序员写死的脚本(If 血量<20% Then 回城)。而现在的顶级 AI(如腾讯绝悟、OpenAI Five),是靠强化学习 (Reinforcement Learning)自己“左右互搏”练出来的。今天,我们不谈枯燥的数学公式,我将手把手教你用,搭建一个能玩 MOBA 游戏的 AI Agent。即使不能去 KPL 打职业,虐一下钻石局还是绰绰有余的!

BUG猿的博客 1182

java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object;

用的createSQLQuery返回值定义为list 由于sql的特殊原因 可能返回值的数组里面 list.get(i)的长度不固定, 可能是1或者更多,当是1的时候系统就不认定它是一个Object[] 而是一个String 所以报了这样一个错 java.lang.ClassCastException: java.lang.String cannot be cast to

落霞朝阳七千里,夏雨冬雪九万顷 5200

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

maven Java 问题java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String

以前开发的maven ssm (spring、mybatis、maven)项目,访问时经常出现java.lang.ClassCastException: [Ljava.lang.String;maven Java 问题java.lang.ClassCastException: [Ljava.lang.String;出现java.lang.ClassCastException: [Ljava.lang.String;

一名开发者 554

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

List转数组:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

List<String> list= new ArrayList<String>(); //根据小区id查询人行闸机 List<ResourceShadow> shadowList = queryAreaEntranceBrakesByPlace(dgpData.getProjectid(), communityid); if(shadowList != null && shadowList.size() >0){ for (Resource...

兴趣是最好的老师 1129

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

List<String>转成String[],报错java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava

今天写代码的时候,遇到一个场景,需要把 String 类型的 list 转成 String 类型的数组使用,list 本身是有提供方法转变的,但是我用错了。我开始是这样使用的 结果报了这个错误: 后面改成这样使用即可...

北回归线的博客 894

集合转换数组报错:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

集合转换数组出现异常记录

weixin_41713225的博客 1148

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String,toArray向下转型失败

问题: 将集合通过toArray转为Object[]数组后,再通过向下转型失败 源代码: public void test(){ List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); list.add("c"...

wang037195的博客 1117

错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String

错误源码:throws HibernateException, SQLException { //当有数据查询条件不等于null时,则执行Hql条件查询语句 if(Params!=null) { List datas=session.createQuery(queryListHql) .setParameter(0,Params ) .setFirstResult(offset)

xiantingxinbuone的专栏 1662

关于java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object的错误报告

java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Obj     ect;     在项目中,刚开始使用Hibernate没有多久,在使用createSQLQuery出现的非常让人郁闷的错误,     刚开始我编写的代码是这样子的     public List getSynchroni

无畏的心_ 3916

java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Obj

初学遇到翻遍后终于知道: Query query=session.createQuery("select a.deviceVendor  from DeviceTable as a group by deviceVendor"); 查询一个字段得到的不是对象而是String, List list=query.list();      int j=list.size();   Syste

liyunxin0534的专栏 3482

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

String[] array =(String[])list.toArray(new String[list.size()]);

飞乐鸟的博客 692

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String

提示:取值时的错误,强制转换成Object,即可 Object[] omrGre = (Object[])resList.get(0);

海阔天空 1505
simonlive
博客等级 码龄19年 2粉丝 0原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值