org.springframework.core.ResolvableType.hasUnresolvableGenerics()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(10.6k)|赞(0)|评价(0)|浏览(149)

本文整理了Java中org.springframework.core.ResolvableType.hasUnresolvableGenerics方法的一些代码示例,展示了ResolvableType.hasUnresolvableGenerics的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ResolvableType.hasUnresolvableGenerics方法的具体详情如下:
包路径:org.springframework.core.ResolvableType
类名称:ResolvableType
方法名:hasUnresolvableGenerics

ResolvableType.hasUnresolvableGenerics介绍

[英]Determine whether the underlying type has any unresolvable generics: either through an unresolvable type variable on the type itself or through implementing a generic interface in a raw fashion, i.e. without substituting that interface's type variables. The result will be true only in those two scenarios.
[中]确定基础类型是否有任何不可解析的泛型:要么通过类型本身上的不可解析类型变量,要么通过以原始方式实现泛型接口,即不替换该接口的类型变量。结果只有在这两种情况下才是正确的。

代码示例

代码示例来源:origin: spring-projects/spring-framework

@Override
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
  return ((MULTIVALUE_TYPE.isAssignableFrom(elementType) ||
      (elementType.hasUnresolvableGenerics() &&
          MultiValueMap.class.isAssignableFrom(elementType.toClass()))) &&
      (mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)));
}

代码示例来源:origin: org.springframework/spring-web

@Override
public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) {
  return ((MULTIVALUE_TYPE.isAssignableFrom(elementType) ||
      (elementType.hasUnresolvableGenerics() &&
          MultiValueMap.class.isAssignableFrom(elementType.toClass()))) &&
      (mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType)));
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public boolean supportsEventType(ResolvableType eventType) {
  for (ResolvableType declaredEventType : this.declaredEventTypes) {
    if (declaredEventType.isAssignableFrom(eventType)) {
      return true;
    }
    if (PayloadApplicationEvent.class.isAssignableFrom(eventType.toClass())) {
      ResolvableType payloadType = eventType.as(PayloadApplicationEvent.class).getGeneric();
      if (declaredEventType.isAssignableFrom(payloadType)) {
        return true;
      }
    }
  }
  return eventType.hasUnresolvableGenerics();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void hasUnresolvableGenerics() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("stringList"));
  assertThat(type.hasUnresolvableGenerics(), equalTo(false));
}

代码示例来源:origin: org.springframework/spring-context

@Override
public boolean supportsEventType(ResolvableType eventType) {
  for (ResolvableType declaredEventType : this.declaredEventTypes) {
    if (declaredEventType.isAssignableFrom(eventType)) {
      return true;
    }
    if (PayloadApplicationEvent.class.isAssignableFrom(eventType.toClass())) {
      ResolvableType payloadType = eventType.as(PayloadApplicationEvent.class).getGeneric();
      if (declaredEventType.isAssignableFrom(payloadType)) {
        return true;
      }
    }
  }
  return eventType.hasUnresolvableGenerics();
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void hasUnresolvableGenericsBasedOnOwnGenerics() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class);
  assertThat(type.hasUnresolvableGenerics(), equalTo(true));
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void hasUnresolvableGenericsWhenImplementesRawInterface() throws Exception {
  ResolvableType type = ResolvableType.forClass(MySimpleInterfaceTypeWithImplementsRaw.class);
  for (ResolvableType generic : type.getGenerics()) {
    assertThat(generic.resolve(), not(nullValue()));
  }
  assertThat(type.hasUnresolvableGenerics(), equalTo(true));
}

代码示例来源:origin: spring-projects/spring-framework

@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
  // Check raw type first...
  if (this.typeInfo.getTargetType() != targetType.getObjectType()) {
    return false;
  }
  // Full check for complex generic type match required?
  ResolvableType rt = targetType.getResolvableType();
  if (!(rt.getType() instanceof Class) && !rt.isAssignableFrom(this.targetType) &&
      !this.targetType.hasUnresolvableGenerics()) {
    return false;
  }
  return !(this.converter instanceof ConditionalConverter) ||
      ((ConditionalConverter) this.converter).matches(sourceType, targetType);
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void hasUnresolvableGenericsWhenSelfNotResolvable() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class).getGeneric();
  assertThat(type.hasUnresolvableGenerics(), equalTo(false));
}

代码示例来源:origin: spring-projects/spring-framework

@Test
public void hasUnresolvableGenericsWhenExtends() throws Exception {
  ResolvableType type = ResolvableType.forClass(ExtendsMySimpleInterfaceTypeWithImplementsRaw.class);
  for (ResolvableType generic : type.getGenerics()) {
    assertThat(generic.resolve(), not(nullValue()));
  }
  assertThat(type.hasUnresolvableGenerics(), equalTo(true));
}

代码示例来源:origin: spring-projects/spring-framework

/**
 * Determine whether the underlying type has any unresolvable generics:
 * either through an unresolvable type variable on the type itself
 * or through implementing a generic interface in a raw fashion,
 * i.e. without substituting that interface's type variables.
 * The result will be {@code true} only in those two scenarios.
 */
public boolean hasUnresolvableGenerics() {
  if (this == NONE) {
    return false;
  }
  ResolvableType[] generics = getGenerics();
  for (ResolvableType generic : generics) {
    if (generic.isUnresolvableTypeVariable() || generic.isWildcardWithoutBounds()) {
      return true;
    }
  }
  Class<?> resolved = resolve();
  if (resolved != null) {
    for (Type genericInterface : resolved.getGenericInterfaces()) {
      if (genericInterface instanceof Class) {
        if (forClass((Class<?>) genericInterface).hasGenerics()) {
          return true;
        }
      }
    }
    return getSuperType().hasUnresolvableGenerics();
  }
  return false;
}

代码示例来源:origin: org.springframework/spring-core

@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
  // Check raw type first...
  if (this.typeInfo.getTargetType() != targetType.getObjectType()) {
    return false;
  }
  // Full check for complex generic type match required?
  ResolvableType rt = targetType.getResolvableType();
  if (!(rt.getType() instanceof Class) && !rt.isAssignableFrom(this.targetType) &&
      !this.targetType.hasUnresolvableGenerics()) {
    return false;
  }
  return !(this.converter instanceof ConditionalConverter) ||
      ((ConditionalConverter) this.converter).matches(sourceType, targetType);
}

代码示例来源:origin: org.springframework/spring-core

/**
 * Determine whether the underlying type has any unresolvable generics:
 * either through an unresolvable type variable on the type itself
 * or through implementing a generic interface in a raw fashion,
 * i.e. without substituting that interface's type variables.
 * The result will be {@code true} only in those two scenarios.
 */
public boolean hasUnresolvableGenerics() {
  if (this == NONE) {
    return false;
  }
  ResolvableType[] generics = getGenerics();
  for (ResolvableType generic : generics) {
    if (generic.isUnresolvableTypeVariable() || generic.isWildcardWithoutBounds()) {
      return true;
    }
  }
  Class<?> resolved = resolve();
  if (resolved != null) {
    for (Type genericInterface : resolved.getGenericInterfaces()) {
      if (genericInterface instanceof Class) {
        if (forClass((Class<?>) genericInterface).hasGenerics()) {
          return true;
        }
      }
    }
    return getSuperType().hasUnresolvableGenerics();
  }
  return false;
}

代码示例来源:origin: spring-projects/spring-framework

if (resolvedType.hasUnresolvableGenerics()) {
  ParameterizedType parameterizedType = (ParameterizedType) genericType;
  Class<?>[] generics = new Class<?>[parameterizedType.getActualTypeArguments().length];

代码示例来源:origin: spring-projects/spring-framework

@Test
public void noneReturnValues() throws Exception {
  ResolvableType none = ResolvableType.NONE;
  assertThat(none.as(Object.class), equalTo(ResolvableType.NONE));
  assertThat(none.asCollection(), equalTo(ResolvableType.NONE));
  assertThat(none.asMap(), equalTo(ResolvableType.NONE));
  assertThat(none.getComponentType(), equalTo(ResolvableType.NONE));
  assertThat(none.getGeneric(0), equalTo(ResolvableType.NONE));
  assertThat(none.getGenerics().length, equalTo(0));
  assertThat(none.getInterfaces().length, equalTo(0));
  assertThat(none.getSuperType(), equalTo(ResolvableType.NONE));
  assertThat(none.getType(), equalTo(ResolvableType.EmptyType.INSTANCE));
  assertThat(none.hasGenerics(), equalTo(false));
  assertThat(none.isArray(), equalTo(false));
  assertThat(none.resolve(), nullValue());
  assertThat(none.resolve(String.class), equalTo((Class) String.class));
  assertThat(none.resolveGeneric(0), nullValue());
  assertThat(none.resolveGenerics().length, equalTo(0));
  assertThat(none.toString(), equalTo("?"));
  assertThat(none.hasUnresolvableGenerics(), equalTo(false));
  assertThat(none.isAssignableFrom(ResolvableType.forClass(Object.class)), equalTo(false));
}

代码示例来源:origin: org.springframework/spring-core

if (resolvedType.hasUnresolvableGenerics()) {
  ParameterizedType parameterizedType = (ParameterizedType) genericType;
  Class<?>[] generics = new Class<?>[parameterizedType.getActualTypeArguments().length];

代码示例来源:origin: com.alibaba/fastjson

private static Type getType(Type type, Class<?> contextClass) {
  if (contextClass != null) {
    ResolvableType resolvedType = ResolvableType.forType(type);
    if (type instanceof TypeVariable) {
      ResolvableType resolvedTypeVariable = resolveVariable((TypeVariable) type, ResolvableType.forClass(contextClass));
      if (resolvedTypeVariable != ResolvableType.NONE) {
        return resolvedTypeVariable.resolve();
      }
    } else if (type instanceof ParameterizedType && resolvedType.hasUnresolvableGenerics()) {
      ParameterizedType parameterizedType = (ParameterizedType) type;
      Class<?>[] generics = new Class[parameterizedType.getActualTypeArguments().length];
      Type[] typeArguments = parameterizedType.getActualTypeArguments();
      for (int i = 0; i < typeArguments.length; ++i) {
        Type typeArgument = typeArguments[i];
        if (typeArgument instanceof TypeVariable) {
          ResolvableType resolvedTypeArgument = resolveVariable((TypeVariable) typeArgument, ResolvableType.forClass(contextClass));
          if (resolvedTypeArgument != ResolvableType.NONE) {
            generics[i] = resolvedTypeArgument.resolve();
          } else {
            generics[i] = ResolvableType.forType(typeArgument).resolve();
          }
        } else {
          generics[i] = ResolvableType.forType(typeArgument).resolve();
        }
      }
      return ResolvableType.forClassWithGenerics(resolvedType.getRawClass(), generics).getType();
    }
  }
  return type;
}

代码示例来源:origin: spring-projects/spring-framework

(targetType.hasUnresolvableGenerics() || targetType.resolve() == Properties.class)) {

代码示例来源:origin: org.springframework/spring-beans

(targetType.hasUnresolvableGenerics() || targetType.resolve() == Properties.class)) {

代码示例来源:origin: spring-projects/spring-integration

@Override
public boolean supportsEventType(ResolvableType eventType) {
  if (this.eventTypes == null) {
    return true;
  }
  for (ResolvableType type : this.eventTypes) {
    if (type.isAssignableFrom(eventType)) {
      return true;
    }
  }
  if (eventType.getRawClass() != null
      && PayloadApplicationEvent.class.isAssignableFrom(eventType.getRawClass())) {
    if (eventType.hasUnresolvableGenerics()) {
      return true;
    }
    ResolvableType payloadType = eventType.as(PayloadApplicationEvent.class).getGeneric();
    for (ResolvableType type : this.eventTypes) {
      if (type.isAssignableFrom(payloadType)) {
        return true;
      }
    }
  }
  return false;
}

相关文章

微信公众号

最新文章

更多