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

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

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

ResolvableType.resolve介绍

[英]Resolve this type to a java.lang.Class, returning nullif the type cannot be resolved. This method will consider bounds of TypeVariable and WildcardType if direct resolution fails; however, bounds of Object.class will be ignored.

If this method returns a non-null Class and #hasGenerics()returns false, the given type effectively wraps a plain Class, allowing for plain Class processing if desirable.
[中]将此类型解析为java。类,如果无法解析类型,则返回null。如果直接分解失败,该方法将考虑类型和WildcardType的界限;然而,对象的边界是有限的。课堂将被忽略。
如果此方法返回一个非null类,而#hasGenerics()返回false,那么给定的类型将有效地包装一个普通类,如果需要,允许进行普通类处理。

代码示例

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

private Mono<?> decodeData(String data, ResolvableType dataType, Map<String, Object> hints) {
  if (String.class == dataType.resolve()) {
    return Mono.just(data.substring(0, data.length() - 1));
  }
  if (this.decoder == null) {
    return Mono.error(new CodecException("No SSE decoder configured and the data is not String."));
  }
  byte[] bytes = data.getBytes(StandardCharsets.UTF_8);
  Mono<DataBuffer> input = Mono.just(bufferFactory.wrap(bytes));
  return this.decoder.decodeToMono(input, dataType, MediaType.TEXT_EVENT_STREAM, hints);
}

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

@Test
public void resolveTypeVariableFromSuperType() throws Exception {
  ResolvableType type = ResolvableType.forClass(ExtendsList.class);
  assertThat(type.resolve(), equalTo((Class) ExtendsList.class));
  assertThat(type.asCollection().resolveGeneric(),
      equalTo((Class) CharSequence.class));
}

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

@Override
@SuppressWarnings("unchecked")
public boolean supportsEventType(ResolvableType eventType) {
  if (this.delegate instanceof SmartApplicationListener) {
    Class<? extends ApplicationEvent> eventClass = (Class<? extends ApplicationEvent>) eventType.resolve();
    return (eventClass != null && ((SmartApplicationListener) this.delegate).supportsEventType(eventClass));
  }
  else {
    return (this.declaredEventType == null || this.declaredEventType.isAssignableFrom(eventType));
  }
}

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

@Nullable
private static Class<?> getSingleGeneric(ResolvableType resolvableType) {
  Assert.isTrue(resolvableType.getGenerics().length == 1,
      () -> "Expected 1 type argument on generic interface [" + resolvableType +
      "] but found " + resolvableType.getGenerics().length);
  return resolvableType.getGeneric().resolve();
}

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

@Override
public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) {
  Class<?> clazz = elementType.toClass();
  return supportsMimeType(mimeType) && (Object.class == clazz ||
      (!String.class.isAssignableFrom(elementType.resolve(clazz)) && getObjectMapper().canSerialize(clazz)));
}

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

@Test
public void resolveVariableFromFieldTypeUnknown() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("parameterizedType"));
  assertThat(type.resolve(), equalTo((Class) List.class));
  assertThat(type.getGeneric().resolve(), nullValue());
}

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

@Test
public void resolveGenericMultiArrayType() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("genericMultiArrayType"));
  assertThat(type.resolve(), equalTo((Class) List[][][].class));
  assertThat(type.getComponentType().resolve(), equalTo((Class) List[][].class));
}

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

@Test
public void resolveTypeVaraibleFromMethodReturnWithInstanceClass() throws Exception {
  ResolvableType type = ResolvableType.forMethodReturnType(
      Methods.class.getMethod("typedReturn"), TypedMethods.class);
  assertThat(type.resolve(), equalTo((Class) String.class));
}

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

@Test
public void getSuperType() throws Exception {
  ResolvableType type = ResolvableType.forClass(ExtendsList.class).getSuperType();
  assertThat(type.resolve(), equalTo((Class) ArrayList.class));
  type = type.getSuperType();
  assertThat(type.resolve(), equalTo((Class) AbstractList.class));
  type = type.getSuperType();
  assertThat(type.resolve(), equalTo((Class) AbstractCollection.class));
  type = type.getSuperType();
  assertThat(type.resolve(), equalTo((Class) Object.class));
}

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

@Test
public void resolveGenericArrayType() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("genericArrayType"));
  assertThat(type.resolve(), equalTo((Class) List[].class));
  assertThat(type.getComponentType().resolve(), equalTo((Class) List.class));
  assertThat(type.getComponentType().getGeneric().resolve(), equalTo((Class) String.class));
}

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

@Test
public void resolveBoundedTypeVariableResult() throws Exception {
  ResolvableType type = ResolvableType.forMethodReturnType(Methods.class.getMethod("boundedTypeVaraibleResult"));
  assertThat(type.resolve(), equalTo((Class) CharSequence.class));
}

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

@Test
public void resolveVariableFromInheritedField() throws Exception {
  ResolvableType type = ResolvableType.forField(
      Fields.class.getField("stringIntegerMultiValueMap")).as(Map.class);
  assertThat(type.getGeneric(0).resolve(), equalTo((Class) String.class));
  assertThat(type.getGeneric(1).resolve(), equalTo((Class) List.class));
  assertThat(type.getGeneric(1, 0).resolve(), equalTo((Class) Integer.class));
}

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

@Test
public void canResolveVoid() throws Exception {
  ResolvableType type = ResolvableType.forClass(void.class);
  assertThat(type.resolve(), equalTo(void.class));
}

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

@Test
public void resolveWildcardTypeUpperBounds() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("wildcardType"));
  assertThat(type.getGeneric().resolve(), equalTo((Class) Number.class));
}

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

@Test
public void resolveTypeVariableFromTypeWithVariableResolver() throws Exception {
  Type sourceType = Methods.class.getMethod("typedReturn").getGenericReturnType();
  ResolvableType type = ResolvableType.forType(
      sourceType, ResolvableType.forClass(TypedMethods.class).as(Methods.class).asVariableResolver());
  assertThat(type.resolve(), equalTo((Class) String.class));
  assertThat(type.getType().toString(), equalTo("T"));
}

代码示例来源: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

@Test
public void forArrayComponent() throws Exception {
  ResolvableType elementType = ResolvableType.forField(Fields.class.getField("stringList"));
  ResolvableType type = ResolvableType.forArrayComponent(elementType);
  assertThat(type.toString(), equalTo("java.util.List<java.lang.String>[]"));
  assertThat(type.resolve(), equalTo(List[].class));
}

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

@Test
public void resolveGenericArrayFromGeneric() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("stringArrayList"));
  ResolvableType generic = type.asCollection().getGeneric();
  assertThat(generic.getType().toString(), equalTo("E"));
  assertThat(generic.isArray(), equalTo(true));
  assertThat(generic.resolve(), equalTo((Class) String[].class));
}

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

@Test
public void forInstanceProvider() {
  ResolvableType type = ResolvableType.forInstance(new MyGenericInterfaceType<>(String.class));
  assertThat(type.getRawClass(), equalTo(MyGenericInterfaceType.class));
  assertThat(type.getGeneric().resolve(), equalTo(String.class));
}

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

@Test
public void resolveFromClassWithGenerics() throws Exception {
  ResolvableType type = ResolvableType.forClassWithGenerics(List.class, ResolvableType.forClassWithGenerics(List.class, String.class));
  assertThat(type.asCollection().toString(), equalTo("java.util.Collection<java.util.List<java.lang.String>>"));
  assertThat(type.asCollection().getGeneric().toString(), equalTo("java.util.List<java.lang.String>"));
  assertThat(type.asCollection().getGeneric().asCollection().toString(), equalTo("java.util.Collection<java.lang.String>"));
  assertThat(type.toString(), equalTo("java.util.List<java.util.List<java.lang.String>>"));
  assertThat(type.asCollection().getGeneric().getGeneric().resolve(), equalTo((Type) String.class));
}

相关文章

微信公众号

最新文章

更多