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

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

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

ResolvableType.resolveGeneric介绍

[英]Convenience method that will #getGeneric(int...) and #resolve() a specific generic parameters.
[中]方便的方法将#getGeneric(int…)和#resolve()一个特定的泛型参数。

代码示例

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

private boolean isAsyncVoidType(ResolvableType type, @Nullable  ReactiveAdapter adapter) {
  return (adapter != null && (adapter.isNoValue() || type.resolveGeneric() == Void.class));
}

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

@Nullable
private static Class<?> getCollectionParameterType(MethodParameter methodParam) {
  Class<?> paramType = methodParam.getNestedParameterType();
  if (Collection.class == paramType || List.class.isAssignableFrom(paramType)){
    Class<?> valueType = ResolvableType.forMethodParameter(methodParam).asCollection().resolveGeneric();
    if (valueType != null) {
      return valueType;
    }
  }
  return null;
}

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

@Nullable
public Class<?> getMapKeyType(int nestingLevel) {
  return getResolvableType().getNested(nestingLevel).asMap().resolveGeneric(0);
}

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

@Nullable
public Class<?> getCollectionType(int nestingLevel) {
  return getResolvableType().getNested(nestingLevel).asCollection().resolveGeneric();
}

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

@Nullable
public Class<?> getMapValueType(int nestingLevel) {
  return getResolvableType().getNested(nestingLevel).asMap().resolveGeneric(1);
}

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

private void growCollectionIfNecessary(Collection<Object> collection, int index, String name,
    PropertyHandler ph, int nestingLevel) {
  if (!isAutoGrowNestedPaths()) {
    return;
  }
  int size = collection.size();
  if (index >= size && index < this.autoGrowCollectionLimit) {
    Class<?> elementType = ph.getResolvableType().getNested(nestingLevel).asCollection().resolveGeneric();
    if (elementType != null) {
      for (int i = collection.size(); i < index + 1; i++) {
        collection.add(newValue(elementType, null, name));
      }
    }
  }
}

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

@Test
public void resolveTypeVariableFromClassWithImplementsClass() throws Exception {
  ResolvableType type = ResolvableType.forClass(
      MySuperclassType.class, MyCollectionSuperclassType.class);
  assertThat(type.resolveGeneric(), equalTo((Class) Collection.class));
  assertThat(type.resolveGeneric(0, 0), equalTo((Class) String.class));
}

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

@Test
public void resolveTypeVaraibleFromSimpleCollectionSuperclassType() {
  ResolvableType type = ResolvableType.forClass(
      MyCollectionSuperclassType.class).as(MySuperclassType.class);
  assertThat(type.resolveGeneric(), equalTo((Class) Collection.class));
  assertThat(type.resolveGeneric(0, 0), equalTo((Class) String.class));
}

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

@Test
public void resolveTypeVaraibleFromSimpleCollectionInterfaceType() {
  ResolvableType type = ResolvableType.forClass(
      MyCollectionInterfaceType.class).as(MyInterfaceType.class);
  assertThat(type.resolveGeneric(), equalTo((Class) Collection.class));
  assertThat(type.resolveGeneric(0, 0), equalTo((Class) String.class));
}

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

@Test
public void asMap() throws Exception {
  ResolvableType type = ResolvableType.forClass(ExtendsMap.class).asMap();
  assertThat(type.resolve(), equalTo((Class) Map.class));
  assertThat(type.resolveGeneric(0), equalTo((Class) String.class));
  assertThat(type.resolveGeneric(1), equalTo((Class) Integer.class));
}

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

@Test
public void resolveTypeVariableFromConstructorParameterWithImplementsClass() throws Exception {
  Constructor<?> constructor = Constructors.class.getConstructor(Map.class);
  ResolvableType type = ResolvableType.forConstructorParameter(
      constructor, 0, TypedConstructors.class);
  assertThat(type.resolve(), equalTo((Class) Map.class));
  assertThat(type.resolveGeneric(0), equalTo((Class) String.class));
}

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

@Test
public void resolveTypeVariableFromConstructorParameter() throws Exception {
  Constructor<?> constructor = Constructors.class.getConstructor(List.class);
  ResolvableType type = ResolvableType.forConstructorParameter(constructor, 0);
  assertThat(type.resolve(), equalTo((Class) List.class));
  assertThat(type.resolveGeneric(0), equalTo((Class) CharSequence.class));
}

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

@Test
public void resolveUnknownTypeVariableFromConstructorParameter() throws Exception {
  Constructor<?> constructor = Constructors.class.getConstructor(Map.class);
  ResolvableType type = ResolvableType.forConstructorParameter(constructor, 0);
  assertThat(type.resolve(), equalTo((Class) Map.class));
  assertThat(type.resolveGeneric(0), nullValue());
}

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

@Test
public void resolveTypeVaraibleFromSimpleInterfaceType() {
  ResolvableType type = ResolvableType.forClass(
      MySimpleInterfaceType.class).as(MyInterfaceType.class);
  assertThat(type.resolveGeneric(), equalTo((Class) String.class));
}

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

@Test
public void resolveTypeVaraibleFromSimpleSuperclassType() {
  ResolvableType type = ResolvableType.forClass(
      MySimpleSuperclassType.class).as(MySuperclassType.class);
  assertThat(type.resolveGeneric(), equalTo((Class) String.class));
}

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

@Test
public void nestedWithArray() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("genericArrayType"));
  type = type.getNested(2);
  assertThat(type.resolve(), equalTo((Class) List.class));
  assertThat(type.resolveGeneric(), equalTo((Class) String.class));
}

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

@Test
public void testSpr16456() throws Exception {
  ResolvableType genericType = ResolvableType.forField(
      UnresolvedWithGenerics.class.getDeclaredField("set")).asCollection();
  ResolvableType type = ResolvableType.forClassWithGenerics(ArrayList.class, genericType.getGeneric());
  assertThat(type.resolveGeneric(), equalTo(Integer.class));
}

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

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

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

@Test
public void javaDocSample() throws Exception {
  ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap"));
  assertThat(t.toString(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>"));
  assertThat(t.getType().getTypeName(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>"));
  assertThat(t.getType().toString(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>"));
  assertThat(t.getSuperType().toString(), equalTo("java.util.AbstractMap<java.lang.Integer, java.util.List<java.lang.String>>"));
  assertThat(t.asMap().toString(), equalTo("java.util.Map<java.lang.Integer, java.util.List<java.lang.String>>"));
  assertThat(t.getGeneric(0).resolve(), equalTo(Integer.class));
  assertThat(t.getGeneric(1).resolve(), equalTo(List.class));
  assertThat(t.getGeneric(1).toString(), equalTo("java.util.List<java.lang.String>"));
  assertThat(t.resolveGeneric(1, 0), equalTo(String.class));
}

相关文章

微信公众号

最新文章

更多