From b69ab8d568d363d1e5e6be4330fa6d1242e27a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=85=B6=E8=8B=97?= Date: Fri, 14 Feb 2020 22:40:47 +0800 Subject: [PATCH 1/2] Reuse ResolvableType in getDependencyType See gh-24525 --- .../factory/config/DependencyDescriptor.java | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java index c808a815412..0c81b30108f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java @@ -21,8 +21,6 @@ import java.io.ObjectInputStream; import java.io.Serializable; import java.lang.annotation.Annotation; import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; import java.util.Map; import java.util.Optional; @@ -365,23 +363,8 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable public Class getDependencyType() { if (this.field != null) { if (this.nestingLevel > 1) { - Type type = this.field.getGenericType(); - for (int i = 2; i <= this.nestingLevel; i++) { - if (type instanceof ParameterizedType) { - Type[] args = ((ParameterizedType) type).getActualTypeArguments(); - type = args[args.length - 1]; - } - } - if (type instanceof Class) { - return (Class) type; - } - else if (type instanceof ParameterizedType) { - Type arg = ((ParameterizedType) type).getRawType(); - if (arg instanceof Class) { - return (Class) arg; - } - } - return Object.class; + Class clazz = getResolvableType().getRawClass(); + return clazz != null ? clazz : Object.class; } else { return this.field.getType(); From f1fe16e3cda66b164f77489f82287116477197bc Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 21 Dec 2021 11:17:53 +0100 Subject: [PATCH 2/2] Polish "Reuse ResolvableType in getDependencyType" See gh-24525 --- .../beans/factory/config/DependencyDescriptor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java index 0c81b30108f..4825563735f 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java @@ -364,7 +364,7 @@ public class DependencyDescriptor extends InjectionPoint implements Serializable if (this.field != null) { if (this.nestingLevel > 1) { Class clazz = getResolvableType().getRawClass(); - return clazz != null ? clazz : Object.class; + return (clazz != null ? clazz : Object.class); } else { return this.field.getType();