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

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

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

ResolvableType.getGeneric介绍

[英]Return a ResolvableType representing the generic parameter for the given indexes. Indexes are zero based; for example given the type Map>, getGeneric(0) will access the Integer. Nested generics can be accessed by specifying multiple indexes; for example getGeneric(1, 0) will access the String from the nested List. For convenience, if no indexes are specified the first generic is returned.

If no generic is available at the specified indexes #NONE is returned.
[中]返回表示给定索引的泛型参数的ResolvableType。索引是以零为基础的;例如,给定类型Map>,getGeneric(0)将访问整数。嵌套泛型可以通过指定多个索引来访问;例如,getGeneric(1,0)将访问嵌套列表中的字符串。为方便起见,如果未指定索引,则返回第一个泛型。
如果指定索引中没有可用的泛型#则返回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

@Nullable
static ResolvableType resolveDeclaredEventType(Class<?> listenerType) {
  ResolvableType eventType = eventTypeCache.get(listenerType);
  if (eventType == null) {
    eventType = ResolvableType.forClass(listenerType).as(ApplicationListener.class).getGeneric();
    eventTypeCache.put(listenerType, eventType);
  }
  return (eventType != ResolvableType.NONE ? eventType : null);
}

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

public ConcurrentResultMethodParameter(Object returnValue) {
  super(-1);
  this.returnValue = returnValue;
  this.returnType = (returnValue instanceof ReactiveTypeHandler.CollectedValuesList ?
      ((ReactiveTypeHandler.CollectedValuesList) returnValue).getReturnType() :
      ResolvableType.forType(super.getGenericParameterType()).getGeneric());
}

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

@Test
public void getGenericOutOfBounds() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class, ExtendsList.class);
  assertThat(type.getGeneric(0), not(equalTo(ResolvableType.NONE)));
  assertThat(type.getGeneric(1), equalTo(ResolvableType.NONE));
  assertThat(type.getGeneric(0, 1), equalTo(ResolvableType.NONE));
}

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

private Class<?> getPayloadType(MethodParameter parameter) {
  Type genericParamType = parameter.getGenericParameterType();
  ResolvableType resolvableType = ResolvableType.forType(genericParamType).as(Message.class);
  return resolvableType.getGeneric().toClass();
}

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

@Override
public Flux<Object> read(
    ResolvableType elementType, ReactiveHttpInputMessage message, Map<String, Object> hints) {
  boolean shouldWrap = isServerSentEvent(elementType);
  ResolvableType valueType = (shouldWrap ? elementType.getGeneric() : elementType);
  return stringDecoder.decode(message.getBody(), STRING_TYPE, null, hints)
      .bufferUntil(line -> line.equals(""))
      .concatMap(lines -> buildEvent(lines, valueType, shouldWrap, hints));
}

代码示例来源: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 getGenericByIndex() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("stringIntegerMultiValueMap"));
  assertThat(type.getGeneric(0).getType(), equalTo((Type) String.class));
  assertThat(type.getGeneric(1).getType(), equalTo((Type) Integer.class));
}

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

@Test
public void getGenericOfGenericByIndexes() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("stringListList"));
  assertThat(type.getGeneric(0, 0).getType(), equalTo((Type) String.class));
}

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

@Test
public void resolveWildcardLowerBounds() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("wildcardSuperType"));
  assertThat(type.getGeneric().resolve(), equalTo((Class) Number.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 wildcardType() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("wildcardType"));
  assertThat(type.getType(), instanceOf(ParameterizedType.class));
  assertThat(type.getGeneric().getType(), instanceOf(WildcardType.class));
}

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

代码示例来源: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 genericOfGenericWithAs() throws Exception {
  ResolvableType type = ResolvableType.forField(Fields.class.getField("stringListList")).asCollection();
  assertThat(type.toString(), equalTo("java.util.Collection<java.util.List<java.lang.String>>"));
  assertThat(type.getGeneric().asCollection().toString(), equalTo("java.util.Collection<java.lang.String>"));
}

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

@Test
public void serialize() throws Exception {
  testSerialization(ResolvableType.forClass(List.class));
  testSerialization(ResolvableType.forField(Fields.class.getField("charSequenceList")));
  testSerialization(ResolvableType.forMethodParameter(Methods.class.getMethod("charSequenceParameter", List.class), 0));
  testSerialization(ResolvableType.forMethodReturnType(Methods.class.getMethod("charSequenceReturn")));
  testSerialization(ResolvableType.forConstructorParameter(Constructors.class.getConstructor(List.class), 0));
  testSerialization(ResolvableType.forField(Fields.class.getField("charSequenceList")).getGeneric());
  ResolvableType deserializedNone = testSerialization(ResolvableType.NONE);
  assertThat(deserializedNone, sameInstance(ResolvableType.NONE));
}

相关文章

微信公众号

最新文章

更多