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

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

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

ResolvableType.getGenerics介绍

[英]Return an array of ResolvableType representing the generic parameters of this type. If no generics are available an empty array is returned. If you need to access a specific generic consider using the #getGeneric(int...) method as it allows access to nested generics and protects against IndexOutOfBoundsExceptions.
[中]返回表示此类型的泛型参数的ResolvableType数组。如果没有可用的泛型,则返回一个空数组。如果需要访问特定的泛型考虑,请使用方法,因为它允许访问嵌套泛型并防止IndexOutofBoundsException。

代码示例

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

/**
 * Return {@code true} if this type contains generic parameters.
 * @see #getGeneric(int...)
 * @see #getGenerics()
 */
public boolean hasGenerics() {
  return (getGenerics().length > 0);
}

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

/**
 * Return {@code true} if this type contains generic parameters.
 * @see #getGeneric(int...)
 * @see #getGenerics()
 */
public boolean hasGenerics() {
  return (getGenerics().length > 0);
}

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

ResolvableType[] generics = getGenerics();
if (indexes == null || indexes.length == 0) {
  return (generics.length == 0 ? NONE : generics[0]);
  generics = generic.getGenerics();
  if (index < 0 || index >= generics.length) {
    return NONE;

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

/**
 * Convenience method that will {@link #getGenerics() get} and
 * {@link #resolve() resolve} generic parameters.
 * @return an array of resolved generic parameters (the resulting array
 * will never be {@code null}, but it may contain {@code null} elements})
 * @see #getGenerics()
 * @see #resolve()
 */
public Class<?>[] resolveGenerics() {
  ResolvableType[] generics = getGenerics();
  Class<?>[] resolvedGenerics = new Class<?>[generics.length];
  for (int i = 0; i < generics.length; i++) {
    resolvedGenerics[i] = generics[i].resolve();
  }
  return resolvedGenerics;
}

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

/**
 * Convenience method that will {@link #getGenerics() get} and {@link #resolve()
 * resolve} generic parameters, using the specified {@code fallback} if any type
 * cannot be resolved.
 * @param fallback the fallback class to use if resolution fails
 * @return an array of resolved generic parameters
 * @see #getGenerics()
 * @see #resolve()
 */
public Class<?>[] resolveGenerics(Class<?> fallback) {
  ResolvableType[] generics = getGenerics();
  Class<?>[] resolvedGenerics = new Class<?>[generics.length];
  for (int i = 0; i < generics.length; i++) {
    resolvedGenerics[i] = generics[i].resolve(fallback);
  }
  return resolvedGenerics;
}

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

private boolean isSingleValueMap(MethodParameter parameter) {
  if (!MultiValueMap.class.isAssignableFrom(parameter.getParameterType())) {
    ResolvableType[] genericTypes = ResolvableType.forMethodParameter(parameter).getGenerics();
    if (genericTypes.length == 2) {
      return !List.class.isAssignableFrom(genericTypes[1].toClass());
    }
  }
  return false;
}

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

private boolean isSingleValueMap(MethodParameter parameter) {
  if (!MultiValueMap.class.isAssignableFrom(parameter.getParameterType())) {
    ResolvableType[] genericTypes = ResolvableType.forMethodParameter(parameter).getGenerics();
    if (genericTypes.length == 2) {
      return !List.class.isAssignableFrom(genericTypes[1].toClass());
    }
  }
  return false;
}

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

@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

/**
 * Return {@code true} if this type contains unresolvable generics only,
 * that is, no substitute for any of its declared type variables.
 */
boolean isEntirelyUnresolvable() {
  if (this == NONE) {
    return false;
  }
  ResolvableType[] generics = getGenerics();
  for (ResolvableType generic : generics) {
    if (!generic.isUnresolvableTypeVariable() && !generic.isWildcardWithoutBounds()) {
      return false;
    }
  }
  return true;
}

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

/**
 * Return a String representation of this type in its fully resolved form
 * (including any generic parameters).
 */
@Override
public String toString() {
  if (isArray()) {
    return getComponentType() + "[]";
  }
  if (this.resolved == null) {
    return "?";
  }
  if (this.type instanceof TypeVariable) {
    TypeVariable<?> variable = (TypeVariable<?>) this.type;
    if (this.variableResolver == null || this.variableResolver.resolveVariable(variable) == null) {
      // Don't bother with variable boundaries for toString()...
      // Can cause infinite recursions in case of self-references
      return "?";
    }
  }
  StringBuilder result = new StringBuilder(this.resolved.getName());
  if (hasGenerics()) {
    result.append('<');
    result.append(StringUtils.arrayToDelimitedString(getGenerics(), ", "));
    result.append('>');
  }
  return result.toString();
}

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

@Nullable
private ResolvableType[] getRequiredTypeInfo(Class<?> converterClass, Class<?> genericIfc) {
  ResolvableType resolvableType = ResolvableType.forClass(converterClass).as(genericIfc);
  ResolvableType[] generics = resolvableType.getGenerics();
  if (generics.length < 2) {
    return null;
  }
  Class<?> sourceType = generics[0].resolve();
  Class<?> targetType = generics[1].resolve();
  if (sourceType == null || targetType == null) {
    return null;
  }
  return generics;
}

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

index = (index == null ? result.getGenerics().length - 1 : index);
result = result.getGeneric(index);

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

@Test
public void noGetGenerics() throws Exception {
  ResolvableType type = ResolvableType.forClass(ExtendsList.class);
  ResolvableType[] generics = type.getGenerics();
  assertThat(generics.length, equalTo(0));
}

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

@Test
public void getGenericsFromClass() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class);
  ResolvableType[] generics = type.getGenerics();
  assertThat(generics.length, equalTo(1));
  assertThat(generics[0].getType().toString(), equalTo("E"));
}

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

@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 getGenericsFromParameterizedType() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class, ExtendsList.class);
  ResolvableType[] generics = type.getGenerics();
  assertThat(generics.length, equalTo(1));
  assertThat(generics[0].resolve(), equalTo((Class) CharSequence.class));
}

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

相关文章

微信公众号

最新文章

更多