com.google.common.reflect.TypeToken.resolveSupertype()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(22.2k)|赞(0)|评价(0)|浏览(67)

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

TypeToken.resolveSupertype介绍

暂无

代码示例

代码示例来源:origin: google/guava

/**
 * Returns the generic interfaces that this type directly {@code implements}. This method is
 * similar but different from {@link Class#getGenericInterfaces()}. For example, {@code new
 * TypeToken<List<String>>() {}.getGenericInterfaces()} will return a list that contains {@code
 * new TypeToken<Iterable<String>>() {}}; while {@code List.class.getGenericInterfaces()} will
 * return an array that contains {@code Iterable<T>}, where the {@code T} is the type variable
 * declared by interface {@code Iterable}.
 *
 * <p>If this type is a type variable or wildcard, its upper bounds are examined and those that
 * are either an interface or upper-bounded only by interfaces are returned. This means that the
 * returned types could include type variables too.
 */
final ImmutableList<TypeToken<? super T>> getGenericInterfaces() {
 if (runtimeType instanceof TypeVariable) {
  return boundsAsInterfaces(((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return boundsAsInterfaces(((WildcardType) runtimeType).getUpperBounds());
 }
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type interfaceType : getRawType().getGenericInterfaces()) {
  @SuppressWarnings("unchecked") // interface of T
  TypeToken<? super T> resolvedInterface =
    (TypeToken<? super T>) resolveSupertype(interfaceType);
  builder.add(resolvedInterface);
 }
 return builder.build();
}

代码示例来源:origin: google/guava

/**
 * Returns the generic superclass of this type or {@code null} if the type represents {@link
 * Object} or an interface. This method is similar but different from {@link
 * Class#getGenericSuperclass}. For example, {@code new TypeToken<StringArrayList>()
 * {}.getGenericSuperclass()} will return {@code new TypeToken<ArrayList<String>>() {}}; while
 * {@code StringArrayList.class.getGenericSuperclass()} will return {@code ArrayList<E>}, where
 * {@code E} is the type variable declared by class {@code ArrayList}.
 *
 * <p>If this type is a type variable or wildcard, its first upper bound is examined and returned
 * if the bound is a class or extends from a class. This means that the returned type could be a
 * type variable too.
 */
final @Nullable TypeToken<? super T> getGenericSuperclass() {
 if (runtimeType instanceof TypeVariable) {
  // First bound is always the super class, if one exists.
  return boundAsSuperclass(((TypeVariable<?>) runtimeType).getBounds()[0]);
 }
 if (runtimeType instanceof WildcardType) {
  // wildcard has one and only one upper bound.
  return boundAsSuperclass(((WildcardType) runtimeType).getUpperBounds()[0]);
 }
 Type superclass = getRawType().getGenericSuperclass();
 if (superclass == null) {
  return null;
 }
 @SuppressWarnings("unchecked") // super class of T
 TypeToken<? super T> superToken = (TypeToken<? super T>) resolveSupertype(superclass);
 return superToken;
}

代码示例来源:origin: google/j2objc

/**
 * Returns the generic interfaces that this type directly {@code implements}. This method is
 * similar but different from {@link Class#getGenericInterfaces()}. For example, {@code new
 * TypeToken<List<String>>() {}.getGenericInterfaces()} will return a list that contains {@code
 * new TypeToken<Iterable<String>>() {}}; while {@code List.class.getGenericInterfaces()} will
 * return an array that contains {@code Iterable<T>}, where the {@code T} is the type variable
 * declared by interface {@code Iterable}.
 *
 * <p>If this type is a type variable or wildcard, its upper bounds are examined and those that
 * are either an interface or upper-bounded only by interfaces are returned. This means that the
 * returned types could include type variables too.
 */
final ImmutableList<TypeToken<? super T>> getGenericInterfaces() {
 if (runtimeType instanceof TypeVariable) {
  return boundsAsInterfaces(((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return boundsAsInterfaces(((WildcardType) runtimeType).getUpperBounds());
 }
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type interfaceType : getRawType().getGenericInterfaces()) {
  @SuppressWarnings("unchecked") // interface of T
  TypeToken<? super T> resolvedInterface =
    (TypeToken<? super T>) resolveSupertype(interfaceType);
  builder.add(resolvedInterface);
 }
 return builder.build();
}

代码示例来源:origin: google/guava

/**
 * Returns the generic form of {@code superclass}. For example, if this is {@code
 * ArrayList<String>}, {@code Iterable<String>} is returned given the input {@code
 * Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(
   this.someRawTypeIsSubclassOf(superclass),
   "%s is not a super class of %s",
   superclass,
   this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype =
   (TypeToken<? super T>) resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: wildfly/wildfly

/**
 * Returns the generic interfaces that this type directly {@code implements}. This method is
 * similar but different from {@link Class#getGenericInterfaces()}. For example, {@code new
 * TypeToken<List<String>>() {}.getGenericInterfaces()} will return a list that contains {@code
 * new TypeToken<Iterable<String>>() {}}; while {@code List.class.getGenericInterfaces()} will
 * return an array that contains {@code Iterable<T>}, where the {@code T} is the type variable
 * declared by interface {@code Iterable}.
 *
 * <p>If this type is a type variable or wildcard, its upper bounds are examined and those that
 * are either an interface or upper-bounded only by interfaces are returned. This means that the
 * returned types could include type variables too.
 */
final ImmutableList<TypeToken<? super T>> getGenericInterfaces() {
 if (runtimeType instanceof TypeVariable) {
  return boundsAsInterfaces(((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return boundsAsInterfaces(((WildcardType) runtimeType).getUpperBounds());
 }
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type interfaceType : getRawType().getGenericInterfaces()) {
  @SuppressWarnings("unchecked") // interface of T
  TypeToken<? super T> resolvedInterface =
    (TypeToken<? super T>) resolveSupertype(interfaceType);
  builder.add(resolvedInterface);
 }
 return builder.build();
}

代码示例来源:origin: google/j2objc

/**
 * Returns the generic superclass of this type or {@code null} if the type represents {@link
 * Object} or an interface. This method is similar but different from {@link
 * Class#getGenericSuperclass}. For example, {@code new TypeToken<StringArrayList>()
 * {}.getGenericSuperclass()} will return {@code new TypeToken<ArrayList<String>>() {}}; while
 * {@code StringArrayList.class.getGenericSuperclass()} will return {@code ArrayList<E>}, where
 * {@code E} is the type variable declared by class {@code ArrayList}.
 *
 * <p>If this type is a type variable or wildcard, its first upper bound is examined and returned
 * if the bound is a class or extends from a class. This means that the returned type could be a
 * type variable too.
 */
@NullableDecl
final TypeToken<? super T> getGenericSuperclass() {
 if (runtimeType instanceof TypeVariable) {
  // First bound is always the super class, if one exists.
  return boundAsSuperclass(((TypeVariable<?>) runtimeType).getBounds()[0]);
 }
 if (runtimeType instanceof WildcardType) {
  // wildcard has one and only one upper bound.
  return boundAsSuperclass(((WildcardType) runtimeType).getUpperBounds()[0]);
 }
 Type superclass = getRawType().getGenericSuperclass();
 if (superclass == null) {
  return null;
 }
 @SuppressWarnings("unchecked") // super class of T
 TypeToken<? super T> superToken = (TypeToken<? super T>) resolveSupertype(superclass);
 return superToken;
}

代码示例来源:origin: wildfly/wildfly

/**
 * Returns the generic superclass of this type or {@code null} if the type represents {@link
 * Object} or an interface. This method is similar but different from {@link
 * Class#getGenericSuperclass}. For example, {@code new TypeToken<StringArrayList>()
 * {}.getGenericSuperclass()} will return {@code new TypeToken<ArrayList<String>>() {}}; while
 * {@code StringArrayList.class.getGenericSuperclass()} will return {@code ArrayList<E>}, where
 * {@code E} is the type variable declared by class {@code ArrayList}.
 *
 * <p>If this type is a type variable or wildcard, its first upper bound is examined and returned
 * if the bound is a class or extends from a class. This means that the returned type could be a
 * type variable too.
 */
@NullableDecl
final TypeToken<? super T> getGenericSuperclass() {
 if (runtimeType instanceof TypeVariable) {
  // First bound is always the super class, if one exists.
  return boundAsSuperclass(((TypeVariable<?>) runtimeType).getBounds()[0]);
 }
 if (runtimeType instanceof WildcardType) {
  // wildcard has one and only one upper bound.
  return boundAsSuperclass(((WildcardType) runtimeType).getUpperBounds()[0]);
 }
 Type superclass = getRawType().getGenericSuperclass();
 if (superclass == null) {
  return null;
 }
 @SuppressWarnings("unchecked") // super class of T
 TypeToken<? super T> superToken = (TypeToken<? super T>) resolveSupertype(superclass);
 return superToken;
}

代码示例来源:origin: google/j2objc

/**
 * Returns the generic form of {@code superclass}. For example, if this is {@code
 * ArrayList<String>}, {@code Iterable<String>} is returned given the input {@code
 * Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(
   this.someRawTypeIsSubclassOf(superclass),
   "%s is not a super class of %s",
   superclass,
   this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype =
   (TypeToken<? super T>) resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: wildfly/wildfly

/**
 * Returns the generic form of {@code superclass}. For example, if this is {@code
 * ArrayList<String>}, {@code Iterable<String>} is returned given the input {@code
 * Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(
   this.someRawTypeIsSubclassOf(superclass),
   "%s is not a super class of %s",
   superclass,
   this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype =
   (TypeToken<? super T>) resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-analytics

/**
 * Returns the generic interfaces that this type directly {@code implements}. This method is
 * similar but different from {@link Class#getGenericInterfaces()}. For example, {@code
 * new TypeToken<List<String>>() {}.getGenericInterfaces()} will return a list that contains
 * {@code new TypeToken<Iterable<String>>() {}}; while {@code List.class.getGenericInterfaces()}
 * will return an array that contains {@code Iterable<T>}, where the {@code T} is the type
 * variable declared by interface {@code Iterable}.
 *
 * <p>If this type is a type variable or wildcard, its upper bounds are examined and those that
 * are either an interface or upper-bounded only by interfaces are returned. This means that the
 * returned types could include type variables too.
 */
final ImmutableList<TypeToken<? super T>> getGenericInterfaces() {
 if (runtimeType instanceof TypeVariable) {
  return boundsAsInterfaces(((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return boundsAsInterfaces(((WildcardType) runtimeType).getUpperBounds());
 }
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type interfaceType : getRawType().getGenericInterfaces()) {
  @SuppressWarnings("unchecked") // interface of T
  TypeToken<? super T> resolvedInterface = (TypeToken<? super T>)
    resolveSupertype(interfaceType);
  builder.add(resolvedInterface);
 }
 return builder.build();
}

代码示例来源:origin: org.hudsonci.lib.guava/guava

/**
 * Returns the generic interfaces that this type directly {@code implements}. This method is
 * similar but different from {@link Class#getGenericInterfaces()}. For example, {@code
 * new TypeToken<List<String>>() {}.getGenericInterfaces()} will return a list that contains
 * {@code new TypeToken<Iterable<String>>() {}}; while {@code List.class.getGenericInterfaces()}
 * will return an array that contains {@code Iterable<T>}, where the {@code T} is the type
 * variable declared by interface {@code Iterable}.
 *
 * <p>If this type is a type variable or wildcard, its upper bounds are examined and those that
 * are either an interface or upper-bounded only by interfaces are returned. This means that the
 * returned types could include type variables too.
 */
final ImmutableList<TypeToken<? super T>> getGenericInterfaces() {
 if (runtimeType instanceof TypeVariable) {
  return boundsAsInterfaces(((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return boundsAsInterfaces(((WildcardType) runtimeType).getUpperBounds());
 }
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type interfaceType : getRawType().getGenericInterfaces()) {
  @SuppressWarnings("unchecked") // interface of T
  TypeToken<? super T> resolvedInterface = (TypeToken<? super T>)
    resolveSupertype(interfaceType);
  builder.add(resolvedInterface);
 }
 return builder.build();
}

代码示例来源:origin: com.google.guava/guava-jdk5

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-analytics

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: at.bestsolution.efxclipse.eclipse/com.google.guava

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: org.hudsonci.lib.guava/guava

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: Nextdoor/bender

/**
 * Returns the generic form of {@code superclass}. For example, if this is
 * {@code ArrayList<String>}, {@code Iterable<String>} is returned given the
 * input {@code Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(superclass.isAssignableFrom(getRawType()),
   "%s is not a super class of %s", superclass, this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype = (TypeToken<? super T>)
   resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: org.jboss.eap/wildfly-client-all

/**
 * Returns the generic form of {@code superclass}. For example, if this is {@code
 * ArrayList<String>}, {@code Iterable<String>} is returned given the input {@code
 * Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(
   this.someRawTypeIsSubclassOf(superclass),
   "%s is not a super class of %s",
   superclass,
   this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype =
   (TypeToken<? super T>) resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

代码示例来源:origin: org.kill-bill.billing/killbill-platform-osgi-bundles-logger

/**
 * Returns the generic form of {@code superclass}. For example, if this is {@code
 * ArrayList<String>}, {@code Iterable<String>} is returned given the input {@code
 * Iterable.class}.
 */
public final TypeToken<? super T> getSupertype(Class<? super T> superclass) {
 checkArgument(
   this.someRawTypeIsSubclassOf(superclass),
   "%s is not a super class of %s",
   superclass,
   this);
 if (runtimeType instanceof TypeVariable) {
  return getSupertypeFromUpperBounds(superclass, ((TypeVariable<?>) runtimeType).getBounds());
 }
 if (runtimeType instanceof WildcardType) {
  return getSupertypeFromUpperBounds(superclass, ((WildcardType) runtimeType).getUpperBounds());
 }
 if (superclass.isArray()) {
  return getArraySupertype(superclass);
 }
 @SuppressWarnings("unchecked") // resolved supertype
 TypeToken<? super T> supertype =
   (TypeToken<? super T>) resolveSupertype(toGenericType(superclass).runtimeType);
 return supertype;
}

相关文章

微信公众号

最新文章

更多

TypeToken类方法