/** * Returns the {@link JavaType} from the specified {@link MemberDetails} object; * * <p>If the found type is abstract the next {@link MemberHoldingTypeDetails} is searched. * * @param memberDetails the {@link MemberDetails} to search (required) * @return the first non-abstract JavaType, or null if not found */ private JavaType getConcreteJavaType(MemberDetails memberDetails) { Assert.notNull(memberDetails, "Member details required"); JavaType javaType = null; for (MemberHoldingTypeDetails memberHoldingTypeDetails : memberDetails.getDetails()) { if (Modifier.isAbstract(memberHoldingTypeDetails.getModifier())) { continue; } javaType = memberHoldingTypeDetails.getName(); } return javaType; }