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