From d3df45d8fee950a45a7e13ed51512296c731ad8f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 21 Jun 2023 17:17:58 +0200 Subject: [PATCH] Avoid ResolvableType creation for interface/superclass check See gh-30713 (cherry picked from commit 1dfe737d0e57e8634d3bf48a9e49b001bd106cc3) --- .../java/org/springframework/core/ResolvableType.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/ResolvableType.java b/spring-core/src/main/java/org/springframework/core/ResolvableType.java index 831e3a38da3..fa0f963f46d 100644 --- a/spring-core/src/main/java/org/springframework/core/ResolvableType.java +++ b/spring-core/src/main/java/org/springframework/core/ResolvableType.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -568,7 +568,7 @@ public class ResolvableType implements Serializable { try { for (Type genericInterface : resolved.getGenericInterfaces()) { if (genericInterface instanceof Class) { - if (forClass((Class) genericInterface).hasGenerics()) { + if (((Class) genericInterface).getTypeParameters().length > 0) { return true; } } @@ -577,7 +577,10 @@ public class ResolvableType implements Serializable { catch (TypeNotPresentException ex) { // Ignore non-present types in generic signature } - return getSuperType().hasUnresolvableGenerics(); + Class superclass = resolved.getSuperclass(); + if (superclass != null && superclass != Object.class) { + return getSuperType().hasUnresolvableGenerics(); + } } return false; }