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] 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();