From 65c537cdaa18724c5ef459fcd898d56d701cfbda Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 8 Nov 2023 11:39:42 +0100 Subject: [PATCH] Improve equals check by caching resolved generics. Closes: #2974 --- .../springframework/data/util/TypeDiscoverer.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/springframework/data/util/TypeDiscoverer.java b/src/main/java/org/springframework/data/util/TypeDiscoverer.java index e022c22165..9a5d5aa2c8 100644 --- a/src/main/java/org/springframework/data/util/TypeDiscoverer.java +++ b/src/main/java/org/springframework/data/util/TypeDiscoverer.java @@ -60,6 +60,8 @@ class TypeDiscoverer implements TypeInformation { private final Map, List>> constructorParameters = new ConcurrentHashMap<>(); private final Lazy>> typeArguments; + private final Lazy> resolvedGenerics; + protected TypeDiscoverer(ResolvableType type) { Assert.notNull(type, "Type must not be null"); @@ -68,6 +70,8 @@ protected TypeDiscoverer(ResolvableType type) { this.componentType = Lazy.of(this::doGetComponentType); this.valueType = Lazy.of(this::doGetMapValueType); this.typeArguments = Lazy.of(this::doGetTypeArguments); + this.resolvedGenerics = Lazy.of(() -> Arrays.stream(resolvableType.getGenerics()) // + .map(ResolvableType::toClass).collect(Collectors.toList())); } static TypeDiscoverer td(ResolvableType type) { @@ -325,15 +329,7 @@ public boolean equals(@Nullable Object o) { return false; } - var collect1 = Arrays.stream(resolvableType.getGenerics()) // - .map(ResolvableType::toClass) // - .collect(Collectors.toList()); - - var collect2 = Arrays.stream(that.resolvableType.getGenerics()) // - .map(ResolvableType::toClass) // - .collect(Collectors.toList()); - - return ObjectUtils.nullSafeEquals(collect1, collect2); + return ObjectUtils.nullSafeEquals(resolvedGenerics.get(), that.resolvedGenerics.get()); } @Override