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

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

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

ResolvableType.resolveGenerics介绍

[英]Convenience method that will #getGenerics() and #resolve() generic parameters.
[中]将#getGenerics()和#resolve()泛型参数。

代码示例

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

/**
 * Resolve the type arguments of the given generic interface against the given
 * target class which is assumed to implement the generic interface and possibly
 * declare concrete types for its type variables.
 * @param clazz the target class to check against
 * @param genericIfc the generic interface or superclass to resolve the type argument from
 * @return the resolved type of each argument, with the array size matching the
 * number of actual type arguments, or {@code null} if not resolvable
 */
@Nullable
public static Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc) {
  ResolvableType type = ResolvableType.forClass(clazz).as(genericIfc);
  if (!type.hasGenerics() || type.isEntirelyUnresolvable()) {
    return null;
  }
  return type.resolveGenerics(Object.class);
}

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

@SuppressWarnings("unchecked")
private Map<String, String> getLoginLinks() {
  Iterable<ClientRegistration> clientRegistrations = null;
  ClientRegistrationRepository clientRegistrationRepository =
      OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder());
  ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository).as(Iterable.class);
  if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
    clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
  }
  if (clientRegistrations == null) {
    return Collections.emptyMap();
  }
  String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri != null ?
      this.authorizationEndpointConfig.authorizationRequestBaseUri :
      OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI;
  Map<String, String> loginUrlToClientName = new HashMap<>();
  clientRegistrations.forEach(registration -> loginUrlToClientName.put(
      authorizationRequestBaseUri + "/" + registration.getRegistrationId(),
      registration.getClientName()));
  return loginUrlToClientName;
}

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

@Test
public void getResolvedGenerics() throws Exception {
  ResolvableType type = ResolvableType.forClass(List.class, ExtendsList.class);
  Class<?>[] generics = type.resolveGenerics();
  assertThat(generics.length, equalTo(1));
  assertThat(generics[0], equalTo((Class) CharSequence.class));
}

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

/**
 * Resolve the type arguments of the given generic interface against the given
 * target class which is assumed to implement the generic interface and possibly
 * declare concrete types for its type variables.
 * @param clazz the target class to check against
 * @param genericIfc the generic interface or superclass to resolve the type argument from
 * @return the resolved type of each argument, with the array size matching the
 * number of actual type arguments, or {@code null} if not resolvable
 */
@Nullable
public static Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc) {
  ResolvableType type = ResolvableType.forClass(clazz).as(genericIfc);
  if (!type.hasGenerics() || type.isEntirelyUnresolvable()) {
    return null;
  }
  return type.resolveGenerics(Object.class);
}

代码示例来源: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: spring-projects/spring-integration

@SuppressWarnings("unchecked")
protected EndpointSpec(H handler) {
  try {
    Class<?> fClass = ResolvableType.forClass(this.getClass()).as(EndpointSpec.class).resolveGenerics()[1];
    this.endpointFactoryBean = (F) fClass.newInstance();
    this.handler = handler;
  }
  catch (Exception e) {
    throw new IllegalStateException(e);
  }
}

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

@SuppressWarnings("unchecked")
private Map<String, String> getLoginLinks() {
  Iterable<ClientRegistration> clientRegistrations = null;
  ClientRegistrationRepository clientRegistrationRepository =
      OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder());
  ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository).as(Iterable.class);
  if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
    clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
  }
  if (clientRegistrations == null) {
    return Collections.emptyMap();
  }
  String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri != null ?
      this.authorizationEndpointConfig.authorizationRequestBaseUri :
      OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI;
  Map<String, String> loginUrlToClientName = new HashMap<>();
  clientRegistrations.forEach(registration -> loginUrlToClientName.put(
      authorizationRequestBaseUri + "/" + registration.getRegistrationId(),
      registration.getClientName()));
  return loginUrlToClientName;
}

代码示例来源:origin: Cosium/spring-data-jpa-entity-graph

private boolean computeValidity() {
 Class<?> resolvedReturnType = repositoryMethodReturnType.resolve();
 if (Void.TYPE.equals(resolvedReturnType) || domainClass.isAssignableFrom(resolvedReturnType)) {
  return true;
 }
 for (Class genericType : repositoryMethodReturnType.resolveGenerics()) {
  if (domainClass.isAssignableFrom(genericType)) {
   return true;
  }
 }
 return false;
}

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

@SuppressWarnings("unchecked")
protected H createHealthIndicator(S source) {
  Class<?>[] generics = ResolvableType
      .forClass(CompositeReactiveHealthIndicatorConfiguration.class, getClass())
      .resolveGenerics();
  Class<H> indicatorClass = (Class<H>) generics[0];
  Class<S> sourceClass = (Class<S>) generics[1];
  try {
    return indicatorClass.getConstructor(sourceClass).newInstance(source);
  }
  catch (Exception ex) {
    throw new IllegalStateException("Unable to create indicator " + indicatorClass
        + " for source " + sourceClass, ex);
  }
}

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

@SuppressWarnings("unchecked")
protected H createHealthIndicator(S source) {
  Class<?>[] generics = ResolvableType
      .forClass(CompositeHealthIndicatorConfiguration.class, getClass())
      .resolveGenerics();
  Class<H> indicatorClass = (Class<H>) generics[0];
  Class<S> sourceClass = (Class<S>) generics[1];
  try {
    return indicatorClass.getConstructor(sourceClass).newInstance(source);
  }
  catch (Exception ex) {
    throw new IllegalStateException("Unable to create indicator " + indicatorClass
        + " for source " + sourceClass, ex);
  }
}

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

@SuppressWarnings("unchecked")
protected EndpointSpec(H handler) {
  try {
    Class<?> fClass = ResolvableType.forClass(this.getClass()).as(EndpointSpec.class).resolveGenerics()[1];
    this.endpointFactoryBean = (F) fClass.newInstance();
    this.handler = handler;
  }
  catch (Exception e) {
    throw new IllegalStateException(e);
  }
}

代码示例来源:origin: apache/servicemix-bundles

/**
 * Resolve the type arguments of the given generic interface against the given
 * target class which is assumed to implement the generic interface and possibly
 * declare concrete types for its type variables.
 * @param clazz the target class to check against
 * @param genericIfc the generic interface or superclass to resolve the type argument from
 * @return the resolved type of each argument, with the array size matching the
 * number of actual type arguments, or {@code null} if not resolvable
 */
@Nullable
public static Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc) {
  ResolvableType type = ResolvableType.forClass(clazz).as(genericIfc);
  if (!type.hasGenerics() || type.isEntirelyUnresolvable()) {
    return null;
  }
  return type.resolveGenerics(Object.class);
}

代码示例来源:origin: org.springframework.integration/spring-integration-java-dsl

@SuppressWarnings("unchecked")
protected EndpointSpec(H handler) {
  try {
    Class<?> fClass = ResolvableType.forClass(this.getClass()).as(EndpointSpec.class).resolveGenerics()[1];
    this.endpointFactoryBean = (F) fClass.newInstance();
    this.handler = handler;
  }
  catch (Exception e) {
    throw new IllegalStateException(e);
  }
}

代码示例来源:origin: spring-projects/spring-integration-java-dsl

@SuppressWarnings("unchecked")
protected EndpointSpec(H handler) {
  try {
    Class<?> fClass = ResolvableType.forClass(this.getClass()).as(EndpointSpec.class).resolveGenerics()[1];
    this.endpointFactoryBean = (F) fClass.newInstance();
    this.handler = handler;
  }
  catch (Exception e) {
    throw new IllegalStateException(e);
  }
}

代码示例来源:origin: wxyyxc1992/Backend-Boilerplates

@GetMapping("/oauth_login")
public String getLoginPage(Model model) {
  Iterable<ClientRegistration> clientRegistrations = null;
  ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository)
    .as(Iterable.class);
  if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
    clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
  }
  clientRegistrations.forEach(registration -> oauth2AuthenticationUrls.put(registration.getClientName(), authorizationRequestBaseUri + "/" + registration.getRegistrationId()));
  model.addAttribute("urls", oauth2AuthenticationUrls);
  return "oauth_login";
}

代码示例来源:origin: FundRequest/platform

private FromTo getClasses(final BaseMapper b) {
  final Class<?>[] classes = ResolvableType.forClass(b.getClass()).as(BaseMapper.class).resolveGenerics();
  return new FromTo(classes[0], classes[1]);
}

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

private ResolvableType resolveFactoryObjectType(Class<?> enableStateMachineEnclosingClass) {
  ResolvableType type = null;
  try {
    Class<?>[] generics = ResolvableType.forClass(enableStateMachineEnclosingClass).as(StateMachineConfigurerAdapter.class).resolveGenerics();
    if (generics != null && generics.length == 2) {
      type = ResolvableType.forClassWithGenerics(StateMachineFactory.class, generics);
    }
  } catch (Exception e) {
  }
  return type;
}

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

private ResolvableType resolveFactoryObjectType(Class<?> enableStateMachineEnclosingClass) {
  ResolvableType type = null;
  try {
    Class<?>[] generics = ResolvableType.forClass(enableStateMachineEnclosingClass).as(StateMachineConfigurerAdapter.class).resolveGenerics();
    if (generics != null && generics.length == 2) {
      type = ResolvableType.forClassWithGenerics(StateMachine.class, generics);
    }
  } catch (Exception e) {
  }
  return type;
}

代码示例来源:origin: apache/servicemix-bundles

@SuppressWarnings("unchecked")
private Map<String, String> getLoginLinks() {
  Iterable<ClientRegistration> clientRegistrations = null;
  ClientRegistrationRepository clientRegistrationRepository =
      OAuth2ClientConfigurerUtils.getClientRegistrationRepository(this.getBuilder());
  ResolvableType type = ResolvableType.forInstance(clientRegistrationRepository).as(Iterable.class);
  if (type != ResolvableType.NONE && ClientRegistration.class.isAssignableFrom(type.resolveGenerics()[0])) {
    clientRegistrations = (Iterable<ClientRegistration>) clientRegistrationRepository;
  }
  if (clientRegistrations == null) {
    return Collections.emptyMap();
  }
  String authorizationRequestBaseUri = this.authorizationEndpointConfig.authorizationRequestBaseUri != null ?
      this.authorizationEndpointConfig.authorizationRequestBaseUri :
      OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI;
  Map<String, String> loginUrlToClientName = new HashMap<>();
  clientRegistrations.forEach(registration -> loginUrlToClientName.put(
      authorizationRequestBaseUri + "/" + registration.getRegistrationId(),
      registration.getClientName()));
  return loginUrlToClientName;
}

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.spring-core

/**
 * Resolve the type arguments of the given generic interface against the given
 * target class which is assumed to implement the generic interface and possibly
 * declare concrete types for its type variables.
 * @param clazz the target class to check against
 * @param genericIfc the generic interface or superclass to resolve the type argument from
 * @return the resolved type of each argument, with the array size matching the
 * number of actual type arguments, or {@code null} if not resolvable
 */
@Nullable
public static Class<?>[] resolveTypeArguments(Class<?> clazz, Class<?> genericIfc) {
  ResolvableType type = ResolvableType.forClass(clazz).as(genericIfc);
  if (!type.hasGenerics() || type.isEntirelyUnresolvable()) {
    return null;
  }
  return type.resolveGenerics(Object.class);
}

相关文章

微信公众号

最新文章

更多