From 11a6a049fd73423cc84186e73b2e9434849223e7 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 4 May 2026 10:27:09 +0800 Subject: [PATCH] fix(IotDeviceMessageUtils): skip JDK built-in types in reflection to avoid internal field access --- .../yudao/module/iot/core/util/IotDeviceMessageUtils.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/util/IotDeviceMessageUtils.java b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/util/IotDeviceMessageUtils.java index c49c4a0b9..93a9545a7 100644 --- a/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/util/IotDeviceMessageUtils.java +++ b/yudao-module-iot/yudao-module-iot-core/src/main/java/cn/iocoder/yudao/module/iot/core/util/IotDeviceMessageUtils.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.iot.core.util; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; @@ -83,6 +84,10 @@ public class IotDeviceMessageUtils { if (params instanceof Map) { return ((Map) params).get(fieldName); } + // 跳过 JDK 内置类型,避免反射读取到内部字段(例如 JDK8 下 String#value 会返回 char[]) + if (ClassUtil.isJdkClass(params.getClass())) { + return null; + } try { return ReflectUtil.getFieldValue(params, fieldName); } catch (Exception ignored) {