Error setting expression 'XXX' with value [Ljava.lang.String;@...

本文探讨了在SSH2项目中遇到的Ognl异常问题,具体表现为将String类型的值错误地传递给int类型变量导致的警告。文章详细分析了int与Integer的区别,并给出了解决方案——通过调整数据类型从int改为Integer来规避问题。

最近做SSH2的项目时遇到这个异常,是ognl报的警告

at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1325)

原因:在传值过程中,将String类型的值传给了int类型

由此想到int 与 Integer 的区别:int 默认值是0,Integer 默认值是null

解决方法:将封装类中的 int 类型 改写成 Integer 类型,如 int i  改写成 Integer i 就可以了

后续:将Integer 又改回 int 类型后发现项目又不报错了

batchArgsString: [[Ljava.lang.Object;@e7b095, [Ljava.lang.Object;@130a78c, [Ljava.lang.Object;@629165, [Ljava.lang.Object;@e71961, [Ljava.lang.Object;@18978b0, [Ljava.lang.Object;@11da80a, [Ljava.lang.Object;@18af035, [Ljava.lang.Object;@14cca74, [Ljava.lang.Object;@1946455, [Ljava.lang.Object;@163c955, [Ljava.lang.Object;@1068794, [Ljava.lang.Object;@ace2ea, [Ljava.lang.Object;@fe9ea6, [Ljava.lang.Object;@124cccd, [Ljava.lang.Object;@a9d55a, [Ljava.lang.Object;@143ced7, [Ljava.lang.Object;@16e7337, [Ljava.lang.Object;@2b8973, [Ljava.lang.Object;@f093e9, [Ljava.lang.Object;@11cd796, [Ljava.lang.Object;@179f789, [Ljava.lang.Object;@1a38844, [Ljava.lang.Object;@1762582, [Ljava.lang.Object;@d7ecdd, [Ljava.lang.Object;@a89871, [Ljava.lang.Object;@19ac848, [Ljava.lang.Object;@104a44c, [Ljava.lang.Object;@7e0ab5, [Ljava.lang.Object;@9f739b, [Ljava.lang.Object;@18c3048, [Ljava.lang.Object;@156d8b1, [Ljava.lang.Object;@19f444c, [Ljava.lang.Object;@ffe5cf, [Ljava.lang.Object;@c39e28, [Ljava.lang.Object;@1495e51, [Ljava.lang.Object;@43c790, [Ljava.lang.Object;@1439d8a, [Ljava.lang.Object;@1717d14, [Ljava.lang.Object;@851cfd, [Ljava.lang.Object;@5621ba, [Ljava.lang.Object;@18653f7, [Ljava.lang.Object;@1f708ce, [Ljava.lang.Object;@1919c39, [Ljava.lang.Object;@fb3400, [Ljava.lang.Object;@12fc243, [Ljava.lang.Object;@311610, [Ljava.lang.Object;@1de3a7b, [Ljava.lang.Object;@7e4eb4, [Ljava.lang.Object;@1d2ada2, [Ljava.lang.Object;@19bac9e, [Ljava.lang.Object;@1b84cb4, [Ljava.lang.Object;@165a399, [Ljava.lang.Object;@1fab12a, [Ljava.lang.Object;@1a50657, [Ljava.lang.Object;@e937bb, [Ljava.lang.Object;@3837d4, [Ljava.lang.Object;@3ba298, [Ljava.lang.Object;@18182f6, [Ljava.lang.Object;@83592, [Ljava.lang.Object;@1733350, [Ljava.lang.Object;@cd7684, [Ljava.lang.Object;@136c859, [Ljava.lang.Object;@6fdec8, [Ljava.lang.Object;@5e8c26, [Ljava.lang.Object;@19cb0ff, [Ljava.lang.Object;@e3c0d5, [Ljava.lang.Object;@44c29f, [Ljava.lang.Object;@1743cd, [Ljava.lang.Object;@ca1f38, [Ljava.lang.Object;@19851c, [Ljava.lang.Object;@79fefa, [Ljava.lang.Object;@b0cb53, [Ljava.lang.Object;@6f28e2, [Ljava.lang.Object;@186e56, [Ljava.lang.Object;@1e3d481, [Ljava.lang.Object;@1f5793d, [Ljava.lang.Object;@3262d9, [Ljava.lang.Object;@14bc097, [Ljava.lang.Object;@b74f63, [Ljava.lang.Object;@79e119, [Ljava.lang.Object;@17872e5, [Ljava.lang.Object;@cc5c25, [Ljava.lang.Object;@a4c148, [Ljava.lang.Object;@1f68bac, [Ljava.lang.Object;@11328ad, [Ljava.lang.Object;@16e661e, [Ljava.lang.Object;@170543a, [Ljava.lang.Object;@da1f93, [Ljava.lang.Object;@aa02a5, [Ljava.lang.Object;@68c538, [Ljava.lang.Object;@1648c0b, [Ljava.lang.Object;@1cc2a33, [Ljava.lang.Object;@15ba945, [Ljava.lang.Object;@1b8fe93, [Ljava.lang.Object;@a129fb, [Ljava.lang.Object;@ea026e, [Ljava.lang.Object;@b98c77, [Ljava.lang.Object;@fb015, [Ljava.lang.Object;@1c8a6de, [Ljava.lang.Object;@197213b, [Ljava.lang.Object;@135d74a, [Ljava.lang.Object;@895761, [Ljava.lang.Object;@55eeb8, [Ljava.lang.Object;@b39c70, [Ljava.lang.Object;@12b8eab, [Ljava.lang.Object;@1d9fb70, [Ljava.lang.Object;@fef51d, [Ljava.lang.Object;@e2b96e, [Ljava.lang.Object;@127388f, [Ljava.lang.Object;@1ed5b60, [Ljava.lang.Object;@4c139d, [Ljava.lang.Object;@13cee33, [Ljava.lang.Object;@1315bdb, [Ljava.lang.Object;@723d06, [Ljava.lang.Object;@2a132e, [Ljava.lang.Object;@313c2e, [Ljava.lang.Object;@10b4ef0, [Ljava.lang.Object;@2addda, [Ljava.lang.Object;@6b1ed2, [Ljava.lang.Object;@1c68fbd, [Ljava.lang.Object;@c13f3b, [Ljava.lang.Object;@c9fb34, [Ljava.lang.Object;@64fc31, [Ljava.lang.Object;@1fe32a7, [Ljava.lang.Object;@a1fb04, [Ljava.lang.Object;@15caaff, [Ljava.lang.Object;@6c5c91, [Ljava.lang.Object;@452cb1, [Ljava.lang.Object;@1e797a6, [Ljava.lang.Object;@130ccb7, [Ljava.lang.Object;@15689d4, [Ljava.lang.Object;@91092b, [Ljava.lang.Object;@1e2ec38, [Ljava.lang.Object;@f8d0c7, [Ljava.lang.Object;@173f5e5, [Ljava.lang.Object;@1e37a31, [Ljava.lang.Object;@19eda99, [Ljava.lang.Object;@1805cc5, [Ljava.lang.Object;@1f6418d, [Ljava.lang.Object;@1a28870, [Ljava.lang.Object;@9dd50f, [Ljava.lang.Object;@11acced, [Ljava.lang.Object;@1b082a, [Ljava.lang.Object;@1c1e951, [Ljava.lang.Object;@1407e8b, [Ljava.lang.Object;@50be2a, [Ljava.lang.Object;@92a812, [Ljava.lang.Object;@6d4570, [Ljava.lang.Object;@15de10, [Ljava.lang.Object;@1938196, [Ljava.lang.Object;@ee7f0e, [Ljava.lang.Object;@8cfde6, [Ljava.lang.Object;@454379, [Ljava.lang.Object;@1e3ed96, [Ljava.lang.Object;@8cf3eb, [Ljava.lang.Object;@1a65591, [Ljava.lang.Object;@1d08117, [Ljava.lang.Object;@17b57a6, [Ljava.lang.Object;@4def09, [Ljava.lang.Object;@17e3c0c, [Ljava.lang.Object;@1de4d, [Ljava.lang.Object;@11a680c, [Ljava.lang.Object;@62f681, [Ljava.lang.Object;@16315d, [Ljava.lang.Object;@576c64, [Ljava.lang.Object;@bf30ea, [Ljava.lang.Object;@1520042, [Ljava.lang.Object;@b95a6c, [Ljava.lang.Object;@1423313, [Ljava.lang.Object;@456331, [Ljava.lang.Object;@1782c2b, [Ljava.lang.Object;@1527e92, [Ljava.lang.Object;@1dc05c0, [Ljava.lang.Object;@d1b261, [Ljava.lang.Object;@1ed564, [Ljava.lang.Object;@7c8d9b, [Ljava.lang.Object;@16d7251, [Ljava.lang.Object;@f09ee7, [Ljava.lang.Object;@37d1e8, [Ljava.lang.Object;@8395e0, [Ljava.lang.Object;@b4851b, [Ljava.lang.Object;@4b280c, [Ljava.lang.Object;@43123c, [Ljava.lang.Object;@d9ae01, [Ljava.lang.Object;@837cdc, [Ljava.lang.Object;@14b34c8, [Ljava.lang.Object;@1ab072f, [Ljava.lang.Object;@531dfd, [Ljava.lang.Object;@177fbf7, [Ljava.lang.Object;@15a7525, [Ljava.lang.Object;@3b971e, [Ljava.lang.Object;@e5cf11, [Ljava.lang.Object;@4939f9, [Ljava.lang.Object;@128a48, [Ljava.lang.Object;@c566f3, [Ljava.lang.Object;@9cbefd, [Ljava.lang.Object;@1bdd326, [Ljava.lang.Object;@12f5793, [Ljava.lang.Object;@e44ffb, [Ljava.lang.Object;@1bc610c, [Ljava.lang.Object;@7b3fe, [Ljava.lang.Object;@14de962, [Ljava.lang.Object;@16ef8e7, [Ljava.lang.Object;@1904707, [Ljava.lang.Object;@39f08, [Ljava.lang.Object;@856253, [Ljava.lang.Object;@c19a4, [Ljava.lang.Object;@13bd81d, [Ljava.lang.Object;@1caf9ed, [Ljava.lang.Object;@e0903d, [Ljava.lang.Object;@f77b7c, [Ljava.lang.Object;@1fbb94f, [Ljava.lang.Object;@18a3acc, [Ljava.lang.Object;@1713af8, [Ljava.lang.Object;@ae8731, [Ljava.lang.Object;@fd63ea, [Ljava.lang.Object;@3b7d63, [Ljava.lang.Object;@452a26, [Ljava.lang.Object;@4a250, [Ljava.lang.Object;@1cd7909, [Ljava.lang.Object;@9cc3f6, [Ljava.lang.Object;@123d219, [Ljava.lang.Object;@44eccf, [Ljava.lang.Object;@55dc7f, [Ljava.lang.Object;@ce2af0, [Ljava.lang.Object;@13686ea, [Ljava.lang.Object;@173cd7, [Ljava.lang.Object;@3fa28e, [Ljava.lang.Object;@1ff8e13, [Ljava.lang.Object;@294dd0, [Ljava.lang.Object;@1013686, [Ljava.lang.Object;@29dafa, [Ljava.lang.Object;@1fd56ba, [Ljava.lang.Object;@180c298, [Ljava.lang.Object;@1956868, [Ljava.lang.Object;@18f91ea, [Ljava.lang.Object;@dc4e27, [Ljava.lang.Object;@185ca26, [Ljava.lang.Object;@1933f56, [Ljava.lang.Object;@60ed4f, [Ljava.lang.Object;@bb3b52, [Ljava.lang.Object;@1181619, [Ljava.lang.Object;@171fda3, [Ljava.lang.Object;@166f17] 的值乱码 如何打印正确传入的值
最新发布
11-30
<think>首先,用户的问题是关于解释“[Ljava.lang.String;@933f016”的含义。这是一个Java相关的字符串,看起来像是一个对象的引用或数组的表示。 回想Java中的字符串表示: - 在Java中,当我们打印一个数组时,默认的toString()方法输出类似“[Ljava.lang.String;@12345678”的形式。 - 其中,“[”表示数组,“L”后面的部分是元素类型,“;@”后跟的是对象的哈希码(十六进制)。 具体分解: - “[”:表示这是一个数组。 - “Ljava.lang.String;”:表示数组的元素类型是java.lang.String。这里的“L”表示类类型,“java.lang.String;”是类的全限定名。 - “@933f016”:这看起来像是对象的哈希码。在十六进制中,“933f016”可能是一个内存地址或哈希值。 所以,“[Ljava.lang.String;@933f016”很可能表示一个String数组的默认字符串表示,其中“[Ljava.lang.String;”是类型信息,“@933f016”是对象的哈希码。 现在,用户提到了“参考站内引用:引用[1]:...”,但这段内容是关于Android Transform API的,涉及到QualifiedContent.ContentType如CLASSES和RESOURCES。这与用户当前的问题不直接相关。用户说“上述引用仅供参考”,并提到“请尽可能多的参考用户上一次的问题和你的回答”。 回想用户上一次的问题: - 在对话历史中,用户的上一个问题是在系统级指令中给出的示例,关于快速排序的。但那是一个通用示例,不是用户实际询问的。 - 在实际对话中,用户的第一条消息是系统级指令,然后是这条消息询问“[Ljava.lang.String;@933f016”。 用户说:“请尽可能多的参考用户上一次的问题和你的回答。”但从日志看,用户的上一次消息就是系统级指令,没有其他问题。系统级指令是全局的,不是具体问题。 在用户的消息中,他们引用了“[1]”关于Transform接口的内容,但这似乎是无关的。用户明确说:“上述引用仅供参考,并不是用户真正的需求”,所以我不应该过多关注那个引用。 用户的真正需求是:“我想了解 [Ljava.lang.String;@933f016 所代表的含义及相关信息”。 所以,我需要专注于解释这个字符串的含义。 结构化我的回答: 1. **解释含义**:清晰地说明这表示一个String数组的默认toString()输出。 2. **相关细节**: - 为什么Java数组的toString()给出这种格式? - 如何正确打印数组内容? - 实际例子。 3. **相关问题生成**:按照系统指令,生成相关问题。 系统指令要求: - 使用中文回答。 - 行内数学表达式用$...$,但在这个上下文中,可能没有数学内容。 - 独立公式用$$...$$,如果需要的话。 - LaTeX语法正确。 - 生成相关问题。 - 引用的段落末尾添加引用标识,如[^1],但这里没有外部引用;用户提供了引用[1],但说不相关,所以我可能不需要引用它。 在我的回答中,我可能会提到Java API或概念,如果需要,可以加引用,但这里可能不需要。 最终回答结构: - 直接回答问题。 - 提供详细信息。 - 生成相关问题。 </think>### 解释 [Ljava.lang.String;@933f016 的含义 在Java编程语言中,字符串 `[Ljava.lang.String;@933f016` 是Java虚拟机(JVM)默认的数组对象字符串表示形式。它描述了数组的类型和内存标识信息,而不是数组的实际内容。以下是详细分解和分析: 1. **组成结构分析**: - `[`:开头方括号表示这是一个数组类型。 - `L`:表示数组元素是引用类型(非基本类型)。 - `java.lang.String;`:指定数组元素的具体类型为 `java.lang.String`(Java中的字符串类),分号 `;` 用于结束类型描述。 - `@933f016`:`@` 符号后的十六进制数字 `933f016` 是该数组对象的哈希码(hash code),用于标识对象在JVM中的内存地址或唯一标识符(基于对象的哈希值)。 因此,整个字符串表示一个 `String` 数组对象的引用,其类型为 `[Ljava.lang.String;`,而 `@933f016` 是该数组实例的唯一标识符。 2. **为什么Java会产生这种输出?** - Java数组类(如 `String[]`)默认继承了 `java.lang.Object` 的 `toString()` 方法。 - 该方法不会返回数组的内容,而是输出数组类型和哈希码的合成字符串。这种设计是为了避免潜在的性能开销和安全问题(如打印大型数组)。 - 示例代码演示: ```java public class Main { public static void main(String[] args) { String[] arr = {"hello", "world"}; // 创建一个String数组 System.out.println(arr); // 默认输出类似 [Ljava.lang.String;@933f016 } } ``` 运行时,输出会因JVM和内存地址不同而变化(例如 `@933f016` 可能替换为其他值)。 3. **如何正确获取数组内容?** - 要打印数组的实际元素,需使用工具方法: - 使用 `Arrays.toString(Object[] a)`:返回数组内容的字符串表示。 ```java import java.util.Arrays; String[] arr = {"apple", "banana"}; System.out.println(Arrays.toString(arr)); // 输出: [apple, banana] ``` - 在调试或日志中,IDE(如IntelliJ IDEA)或日志框架(如Log4j)通常会调用 `Arrays.toString()` 自动处理数组输出。 4. **相关问题与注意事项**: - **哈希码的含义**:`@933f016` 是对象的哈希码,默认基于内存地址,但可通过 `hashCode()` 方法覆盖。在同一个JVM实例中,该值可能保持一致;但重启JVM后会变化。 - **性能影响**:在频繁操作数组的代码中,直接使用默认 `toString()` 可能导致调试困难,建议始终使用 `Arrays.toString()`。 - **常见误区**:开发者有时误以为这是数组内容,但它只表示对象引用。调试时,需检查数组是否已初始化或为空(例如 `null` 数组会输出 `null`,而非此格式)。 总之,`[Ljava.lang.String;@933f016` 是一个数组对象的默认字符串表示,反映了Java的类型系统和对象标识机制。在开发中,避免依赖此输出获取数据,而应使用标准库方法处理数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值