Merge branch '2.1.x'

Closes gh-16988
pull/17002/head
Phillip Webb 6 years ago
commit 89f8e187d5

@ -192,14 +192,6 @@ class JavaBeanBinder implements BeanBinder {
}); });
} }
private boolean isOfDifferentType(ResolvableType targetType) {
if (this.type.hasGenerics() || targetType.hasGenerics()) {
return !this.type.equals(targetType);
}
return this.resolvedType == null
|| !this.resolvedType.equals(targetType.resolve());
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> Bean<T> get(Bindable<T> bindable, boolean canCallGetValue) { public static <T> Bean<T> get(Bindable<T> bindable, boolean canCallGetValue) {
ResolvableType type = bindable.getType(); ResolvableType type = bindable.getType();
@ -214,7 +206,7 @@ class JavaBeanBinder implements BeanBinder {
return null; return null;
} }
Bean<?> bean = Bean.cached; Bean<?> bean = Bean.cached;
if (bean == null || bean.isOfDifferentType(type)) { if (bean == null || !bean.isOfType(type, resolvedType)) {
bean = new Bean<>(type, resolvedType); bean = new Bean<>(type, resolvedType);
cached = bean; cached = bean;
} }
@ -234,6 +226,13 @@ class JavaBeanBinder implements BeanBinder {
} }
} }
private boolean isOfType(ResolvableType type, Class<?> resolvedType) {
if (this.type.hasGenerics() || type.hasGenerics()) {
return this.type.equals(type);
}
return this.resolvedType != null && this.resolvedType.equals(resolvedType);
}
} }
private static class BeanSupplier<T> implements Supplier<T> { private static class BeanSupplier<T> implements Supplier<T> {

Loading…
Cancel
Save