Skip to content

Commit 0db257c

Browse files
committed
restored preference for covariant return type if applicable
1 parent 35c2869 commit 0db257c

File tree

1 file changed

+13
-3
lines changed
  • org.springframework.core/src/main/java/org/springframework/core/convert

1 file changed

+13
-3
lines changed

org.springframework.core/src/main/java/org/springframework/core/convert/Property.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,20 @@ private String resolveName() {
142142
private MethodParameter resolveMethodParameter() {
143143
MethodParameter read = resolveReadMethodParameter();
144144
MethodParameter write = resolveWriteMethodParameter();
145-
if (read == null && write == null) {
146-
throw new IllegalStateException("Property is neither readable nor writeable");
145+
if (write == null) {
146+
if (read == null) {
147+
throw new IllegalStateException("Property is neither readable nor writeable");
148+
}
149+
return read;
150+
}
151+
if (read != null) {
152+
Class<?> readType = read.getParameterType();
153+
Class<?> writeType = write.getParameterType();
154+
if (!writeType.equals(readType) && writeType.isAssignableFrom(readType)) {
155+
return read;
156+
}
147157
}
148-
return (write != null ? write : read);
158+
return write;
149159
}
150160

151161
private MethodParameter resolveReadMethodParameter() {

0 commit comments

Comments
 (0)