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

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

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

ResolvableType.isArray介绍

[英]Return true if this type resolves to a Class that represents an array.
[中]如果此类型解析为表示数组的类,则返回true。

代码示例

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

/**
 * Return {@code true} if this type resolves to a Class that represents an array.
 * @see #getComponentType()
 */
public boolean isArray() {
  if (this == NONE) {
    return false;
  }
  return ((this.type instanceof Class && ((Class<?>) this.type).isArray()) ||
      this.type instanceof GenericArrayType || resolveType().isArray());
}

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

/**
 * Return {@code true} if this type resolves to a Class that represents an array.
 * @see #getComponentType()
 */
public boolean isArray() {
  if (this == NONE) {
    return false;
  }
  return ((this.type instanceof Class && ((Class<?>) this.type).isArray()) ||
      this.type instanceof GenericArrayType || resolveType().isArray());
}

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

/**
 * Create an updated {@link Bindable} instance with an existing value.
 * @param existingValue the existing value
 * @return an updated {@link Bindable}
 */
public Bindable<T> withExistingValue(T existingValue) {
  Assert.isTrue(
      existingValue == null || this.type.isArray()
          || this.boxedType.resolve().isInstance(existingValue),
      () -> "ExistingValue must be an instance of " + this.type);
  Supplier<T> value = (existingValue != null) ? () -> existingValue : null;
  return new Bindable<>(this.type, this.boxedType, value, NO_ANNOTATIONS);
}

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

ResolvableType result = this;
for (int i = 2; i <= nestingLevel; i++) {
  if (result.isArray()) {
    result = result.getComponentType();

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

/**
 * 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

@Test
public void getComponentTypeForClassArray() throws Exception {
  Field field = Fields.class.getField("arrayClassType");
  ResolvableType type = ResolvableType.forField(field);
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.getComponentType().getType(),
      equalTo((Type) ((Class) field.getGenericType()).getComponentType()));
}

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

@Test
public void resolveVariableGenericArrayUnknownWithFallback() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("variableTypeGenericArray"));
  assertThat(type.getType().toString(), equalTo("T[]"));
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.toClass(), equalTo((Class) Object.class));
}

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

@Test
public void resolveVariableGenericArray() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("variableTypeGenericArray"), TypedFields.class);
  assertThat(type.getType().toString(), equalTo("T[]"));
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.resolve(), equalTo((Class) String[].class));
}

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

@Test
public void resolveVariableGenericArrayUnknown() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("variableTypeGenericArray"));
  assertThat(type.getType().toString(), equalTo("T[]"));
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.resolve(), nullValue());
}

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

@Test
public void getComponentTypeForNonArray() throws Exception {
  ResolvableType type = ResolvableType.forClass(String.class);
  assertThat(type.isArray(), equalTo(false));
  assertThat(type.getComponentType(), equalTo(ResolvableType.NONE));
}

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

@Test
public void getComponentTypeForGenericArrayType() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("genericArrayType"));
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.getComponentType().getType(),
      equalTo(((GenericArrayType) type.getType()).getGenericComponentType()));
}

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

private AggregateBinder<?> getAggregateBinder(Bindable<?> target, Context context) {
  Class<?> resolvedType = target.getType().resolve(Object.class);
  if (Map.class.isAssignableFrom(resolvedType)) {
    return new MapBinder(context);
  }
  if (Collection.class.isAssignableFrom(resolvedType)) {
    return new CollectionBinder(context);
  }
  if (target.getType().isArray()) {
    return new ArrayBinder(context);
  }
  return null;
}

代码示例来源: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 getComponentTypeForVariableThatResolvesToGenericArray() throws Exception {
  ResolvableType type = ResolvableType.forClass(ListOfGenericArray.class).asCollection().getGeneric();
  assertThat(type.isArray(), equalTo(true));
  assertThat(type.getType(), instanceOf(TypeVariable.class));
  assertThat(type.getComponentType().getType().toString(),
      equalTo("java.util.List<java.lang.String>"));
}

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

if (isArray()) {
  return (other.isArray() && getComponentType().isAssignableFrom(other.getComponentType()));

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

/**
 * If this type is an array, returns the array's component type.
 * If this type is a {@code Stream}, returns the stream's component type.
 * If this type is a {@link Collection} and it is parameterized, returns the Collection's element type.
 * If the Collection is not parameterized, returns {@code null} indicating the element type is not declared.
 * @return the array component type or Collection element type, or {@code null} if this type is a
 * Collection but its element type is not parameterized
 * @throws IllegalStateException if this type is not a {@code java.util.Collection} or array type
 */
@Nullable
public TypeDescriptor getElementTypeDescriptor() {
  if (getResolvableType().isArray()) {
    return new TypeDescriptor(getResolvableType().getComponentType(), null, getAnnotations());
  }
  if (Stream.class.isAssignableFrom(getType())) {
    return getRelatedIfResolvable(this, getResolvableType().as(Stream.class).getGeneric(0));
  }
  return getRelatedIfResolvable(this, getResolvableType().asCollection().getGeneric(0));
}

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

private ConfigurationPropertyName getEntryName(ConfigurationPropertySource source,
    ConfigurationPropertyName name) {
  Class<?> resolved = this.valueType.resolve(Object.class);
  if (Collection.class.isAssignableFrom(resolved) || this.valueType.isArray()) {
    return chopNameAtNumericIndex(name);
  }
  if (!this.root.isParentOf(name)
      && (isValueTreatedAsNestedMap() || !isScalarValue(source, name))) {
    return name.chop(this.root.getNumberOfElements() + 1);
  }
  return name;
}

代码示例来源: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 this type is an array, returns the array's component type.
 * If this type is a {@code Stream}, returns the stream's component type.
 * If this type is a {@link Collection} and it is parameterized, returns the Collection's element type.
 * If the Collection is not parameterized, returns {@code null} indicating the element type is not declared.
 * @return the array component type or Collection element type, or {@code null} if this type is a
 * Collection but its element type is not parameterized
 * @throws IllegalStateException if this type is not a {@code java.util.Collection} or array type
 */
@Nullable
public TypeDescriptor getElementTypeDescriptor() {
  if (getResolvableType().isArray()) {
    return new TypeDescriptor(getResolvableType().getComponentType(), null, getAnnotations());
  }
  if (Stream.class.isAssignableFrom(getType())) {
    return getRelatedIfResolvable(this, getResolvableType().as(Stream.class).getGeneric(0));
  }
  return getRelatedIfResolvable(this, getResolvableType().asCollection().getGeneric(0));
}

相关文章

微信公众号

最新文章

更多