diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java index 6341a5bcf07..5007287c535 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ReflectUtils.java @@ -155,8 +155,8 @@ private ReflectUtils() { } public static boolean isPrimitives(Class cls) { - if (cls.isArray()) { - return isPrimitive(cls.getComponentType()); + while (cls.isArray()) { + cls = cls.getComponentType(); } return isPrimitive(cls); } diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java index 4bc4b31657c..e615dd97b12 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java @@ -199,6 +199,11 @@ public void test_PrimitiveArray() throws Exception { assertArrayObject(new Float[]{37F, -39F, 123456.7F}); assertArrayObject(new Double[]{37D, -39D, 123456.7D}); + + assertObject(new int[][]{{37, -39, 12456}}); + assertObject(new Integer[][][]{{{37, -39, 12456}}}); + + assertArrayObject(new Integer[]{37, -39, 12456}); } @Test