Browse Source

Cache hasUnresolvableGenerics result for repeated checks

Closes gh-30713

(cherry picked from commit 93218a06ba)
pull/30762/head
Juergen Hoeller 3 years ago
parent
commit
5375f62dc1
  1. 12
      spring-core/src/main/java/org/springframework/core/ResolvableType.java

12
spring-core/src/main/java/org/springframework/core/ResolvableType.java

@ -133,6 +133,9 @@ public class ResolvableType implements Serializable { @@ -133,6 +133,9 @@ public class ResolvableType implements Serializable {
@Nullable
private volatile ResolvableType[] generics;
@Nullable
private volatile Boolean unresolvableGenerics;
/**
* Private constructor used to create a new {@link ResolvableType} for cache key purposes,
@ -545,6 +548,15 @@ public class ResolvableType implements Serializable { @@ -545,6 +548,15 @@ public class ResolvableType implements Serializable {
if (this == NONE) {
return false;
}
Boolean unresolvableGenerics = this.unresolvableGenerics;
if (unresolvableGenerics == null) {
unresolvableGenerics = determineUnresolvableGenerics();
this.unresolvableGenerics = unresolvableGenerics;
}
return unresolvableGenerics;
}
private boolean determineUnresolvableGenerics() {
ResolvableType[] generics = getGenerics();
for (ResolvableType generic : generics) {
if (generic.isUnresolvableTypeVariable() || generic.isWildcardWithoutBounds()) {

Loading…
Cancel
Save