diff --git a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java index 12e6ed7c534..64a03910c08 100644 --- a/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java +++ b/org.springframework.beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java @@ -529,7 +529,7 @@ class TypeConverterDelegate { methodParam.increaseNestingLevel(); } Object convertedElement = convertIfNecessary( - indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor()); + indexedPropertyName, null, element, elementType, typeDescriptor.getElementTypeDescriptor(element)); if (methodParam != null) { methodParam.decreaseNestingLevel(); } @@ -624,12 +624,12 @@ class TypeConverterDelegate { methodParam.setTypeIndexForCurrentLevel(0); } Object convertedKey = convertIfNecessary(keyedPropertyName, null, key, keyType, - typeDescriptor.getMapKeyTypeDescriptor()); + typeDescriptor.getMapKeyTypeDescriptor(key)); if (methodParam != null) { methodParam.setTypeIndexForCurrentLevel(1); } Object convertedValue = convertIfNecessary(keyedPropertyName, null, value, valueType, - typeDescriptor.getMapValueTypeDescriptor()); + typeDescriptor.getMapValueTypeDescriptor(value)); if (methodParam != null) { methodParam.decreaseNestingLevel(); } diff --git a/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java b/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java index a43b709f133..f2c4cc6e29b 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java +++ b/org.springframework.core/src/main/java/org/springframework/core/convert/TypeDescriptor.java @@ -324,7 +324,7 @@ public class TypeDescriptor { */ public TypeDescriptor getMapKeyTypeDescriptor(Object key) { TypeDescriptor keyType = getMapKeyTypeDescriptor(); - return (keyType != TypeDescriptor.UNKNOWN ? keyType : TypeDescriptor.forObject(key)); + return (!TypeDescriptor.UNKNOWN.equals(keyType) ? keyType : TypeDescriptor.forObject(key)); } /** @@ -353,7 +353,7 @@ public class TypeDescriptor { */ public TypeDescriptor getMapValueTypeDescriptor(Object value) { TypeDescriptor valueType = getMapValueTypeDescriptor(); - return (valueType != TypeDescriptor.UNKNOWN ? valueType : TypeDescriptor.forObject(value)); + return (!TypeDescriptor.UNKNOWN.equals(valueType) ? valueType : TypeDescriptor.forObject(value)); } /**