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

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

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

ResolvableType.getNested介绍

[英]Return a ResolvableType for the specified nesting level. See #getNested(int,Map) for details.
[中]

代码示例

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

/**
 * Return a {@link ResolvableType} for the specified nesting level.
 * See {@link #getNested(int, Map)} for details.
 * @param nestingLevel the nesting level
 * @return the {@link ResolvableType} type, or {@code #NONE}
 */
public ResolvableType getNested(int nestingLevel) {
  return getNested(nestingLevel, null);
}

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

/**
 * Return a {@link ResolvableType} for the specified nesting level.
 * See {@link #getNested(int, Map)} for details.
 * @param nestingLevel the nesting level
 * @return the {@link ResolvableType} type, or {@code #NONE}
 */
public ResolvableType getNested(int nestingLevel) {
  return getNested(nestingLevel, null);
}

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

/**
 * Return a {@link ResolvableType} for the specified {@link Field} with the
 * given nesting level.
 * @param field the source field
 * @param nestingLevel the nesting level (1 for the outer level; 2 for a nested
 * generic type; etc)
 * @see #forField(Field)
 */
public static ResolvableType forField(Field field, int nestingLevel) {
  Assert.notNull(field, "Field must not be null");
  return forType(null, new FieldTypeProvider(field), null).getNested(nestingLevel);
}

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

@Nullable
private static TypeDescriptor nested(TypeDescriptor typeDescriptor, int nestingLevel) {
  ResolvableType nested = typeDescriptor.resolvableType;
  for (int i = 0; i < nestingLevel; i++) {
    if (Object.class == nested.getType()) {
      // Could be a collection type but we don't know about its element type,
      // so let's just assume there is an element type of type Object...
    }
    else {
      nested = nested.getNested(2);
    }
  }
  if (nested == ResolvableType.NONE) {
    return null;
  }
  return getRelatedIfResolvable(typeDescriptor, nested);
}

代码示例来源: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: org.springframework/spring-core

/**
 * Return a {@link ResolvableType} for the specified {@link Field} with the
 * given nesting level.
 * @param field the source field
 * @param nestingLevel the nesting level (1 for the outer level; 2 for a nested
 * generic type; etc)
 * @see #forField(Field)
 */
public static ResolvableType forField(Field field, int nestingLevel) {
  Assert.notNull(field, "Field must not be null");
  return forType(null, new FieldTypeProvider(field), null).getNested(nestingLevel);
}

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

/**
 * Return a {@link ResolvableType} for the specified {@link Field} with a given
 * implementation and the given nesting level.
 * <p>Use this variant when the class that declares the field includes generic
 * parameter variables that are satisfied by the implementation class.
 * @param field the source field
 * @param nestingLevel the nesting level (1 for the outer level; 2 for a nested
 * generic type; etc)
 * @param implementationClass the implementation class
 * @return a {@link ResolvableType} for the specified field
 * @see #forField(Field)
 */
public static ResolvableType forField(Field field, int nestingLevel, @Nullable Class<?> implementationClass) {
  Assert.notNull(field, "Field must not be null");
  ResolvableType owner = forType(implementationClass).as(field.getDeclaringClass());
  return forType(null, new FieldTypeProvider(field), owner.asVariableResolver()).getNested(nestingLevel);
}

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

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

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

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

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

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

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

/**
 * Return a {@link ResolvableType} for the specified {@link MethodParameter},
 * overriding the target type to resolve with a specific given type.
 * @param methodParameter the source method parameter (must not be {@code null})
 * @param targetType the type to resolve (a part of the method parameter's type)
 * @return a {@link ResolvableType} for the specified method parameter
 * @see #forMethodParameter(Method, int)
 */
public static ResolvableType forMethodParameter(MethodParameter methodParameter, @Nullable Type targetType) {
  Assert.notNull(methodParameter, "MethodParameter must not be null");
  ResolvableType owner = forType(methodParameter.getContainingClass()).as(methodParameter.getDeclaringClass());
  return forType(targetType, new MethodParameterTypeProvider(methodParameter), owner.asVariableResolver()).
      getNested(methodParameter.getNestingLevel(), methodParameter.typeIndexesPerLevel);
}

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

/**
 * Return a {@link ResolvableType} for the specified {@link MethodParameter} with a
 * given implementation type. Use this variant when the class that declares the method
 * includes generic parameter variables that are satisfied by the implementation type.
 * @param methodParameter the source method parameter (must not be {@code null})
 * @param implementationType the implementation type
 * @return a {@link ResolvableType} for the specified method parameter
 * @see #forMethodParameter(MethodParameter)
 */
public static ResolvableType forMethodParameter(MethodParameter methodParameter,
    @Nullable ResolvableType implementationType) {
  Assert.notNull(methodParameter, "MethodParameter must not be null");
  implementationType = (implementationType != null ? implementationType :
      forType(methodParameter.getContainingClass()));
  ResolvableType owner = implementationType.as(methodParameter.getDeclaringClass());
  return forType(null, new MethodParameterTypeProvider(methodParameter), owner.asVariableResolver()).
      getNested(methodParameter.getNestingLevel(), methodParameter.typeIndexesPerLevel);
}

代码示例来源: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: org.springframework/spring-core

/**
 * Return a {@link ResolvableType} for the specified {@link MethodParameter},
 * overriding the target type to resolve with a specific given type.
 * @param methodParameter the source method parameter (must not be {@code null})
 * @param targetType the type to resolve (a part of the method parameter's type)
 * @return a {@link ResolvableType} for the specified method parameter
 * @see #forMethodParameter(Method, int)
 */
public static ResolvableType forMethodParameter(MethodParameter methodParameter, @Nullable Type targetType) {
  Assert.notNull(methodParameter, "MethodParameter must not be null");
  ResolvableType owner = forType(methodParameter.getContainingClass()).as(methodParameter.getDeclaringClass());
  return forType(targetType, new MethodParameterTypeProvider(methodParameter), owner.asVariableResolver()).
      getNested(methodParameter.getNestingLevel(), methodParameter.typeIndexesPerLevel);
}

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

@Test
public void nestedWithIndexes() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("nested"));
  type = type.getNested(2, Collections.singletonMap(2, 0));
  assertThat(type.resolve(), equalTo((Class) Map.class));
  assertThat(type.getGeneric(0).resolve(), equalTo((Class) String.class));
  assertThat(type.getGeneric(1).resolve(), equalTo((Class) Integer.class));
}

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

@Test
public void nested() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("nested"));
  type = type.getNested(2);
  assertThat(type.resolve(), equalTo((Class) Map.class));
  assertThat(type.getGeneric(0).resolve(), equalTo((Class) Byte.class));
  assertThat(type.getGeneric(1).resolve(), equalTo((Class) Long.class));
}

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

@Test
public void testSpr11219() throws Exception {
  ResolvableType type = ResolvableType.forField(BaseProvider.class.getField("stuff"), BaseProvider.class);
  assertTrue(type.getNested(2).isAssignableFrom(ResolvableType.forClass(BaseImplementation.class)));
  assertEquals("java.util.Collection<org.springframework.core.ResolvableTypeTests$IBase<?>>", type.toString());
}

相关文章

微信公众号

最新文章

更多