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

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

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

TypeToken.toGenericType介绍

[英]Returns the type token representing the generic type declaration of cls. For example: TypeToken.getGenericType(Iterable.class) returns Iterable.

If cls isn't parameterized and isn't a generic array, the type token of the class is returned.
[中]返回表示cls的泛型类型声明的类型标记。例如:TypeToken。getGenericType(Iterable.class)返回Iterable。
如果cls未参数化且不是泛型数组,则返回类的类型标记。

代码示例

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

Types.newArrayType(
     toGenericType(cls.getComponentType()).runtimeType);
 @SuppressWarnings("unchecked") // array is covariant
 TypeToken<? extends T> result = (TypeToken<? extends T>) of(arrayOfGenericType);
Type ownerType =
  cls.isMemberClass() && !Modifier.isStatic(cls.getModifiers())
    ? toGenericType(cls.getEnclosingClass()).runtimeType
    : null;

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 // If both runtimeType and subclass are not parameterized, return subclass
 // If runtimeType is not parameterized but subclass is, process subclass as a parameterized type
 // If runtimeType is a raw type (i.e. is a parameterized type specified as a Class<?>), we
 // return subclass as a raw type
 if (runtimeType instanceof Class
   && ((subclass.getTypeParameters().length == 0)
     || (getRawType().getTypeParameters().length != 0))) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype =
   genericSubtype.getSupertype((Class) getRawType()).runtimeType;
 return new TypeResolver()
   .where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

Types.newArrayType(
     toGenericType(cls.getComponentType()).runtimeType);
 @SuppressWarnings("unchecked") // array is covariant
 TypeToken<? extends T> result = (TypeToken<? extends T>) of(arrayOfGenericType);
Type ownerType =
  cls.isMemberClass() && !Modifier.isStatic(cls.getModifiers())
    ? toGenericType(cls.getEnclosingClass()).runtimeType
    : null;

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

public void testToGenericType_staticMemberClass() throws Exception {
 Method getStaticAnonymousClassMethod =
   TypeTokenTest.class.getDeclaredMethod("getStaticAnonymousClass", Object.class);
 ParameterizedType javacReturnType =
   (ParameterizedType) getStaticAnonymousClassMethod.getGenericReturnType();
 ParameterizedType parameterizedType =
   (ParameterizedType) TypeToken.toGenericType(GenericClass.class).getType();
 assertThat(parameterizedType.getOwnerType()).isEqualTo(javacReturnType.getOwnerType());
}

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

Types.newArrayType(
     toGenericType(cls.getComponentType()).runtimeType);
 @SuppressWarnings("unchecked") // array is covariant
 TypeToken<? extends T> result = (TypeToken<? extends T>) of(arrayOfGenericType);
Type ownerType =
  cls.isMemberClass() && !Modifier.isStatic(cls.getModifiers())
    ? toGenericType(cls.getEnclosingClass()).runtimeType
    : null;

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

public void testToGenericType() {
 assertEquals(TypeToken.of(String.class), TypeToken.toGenericType(String.class));
 assertEquals(new TypeToken<int[]>() {}, TypeToken.toGenericType(int[].class));
 @SuppressWarnings("rawtypes") // Iterable.class
 TypeToken<? extends Iterable> genericType = TypeToken.toGenericType(Iterable.class);
 assertEquals(Iterable.class, genericType.getRawType());
 assertEquals(
   Types.newParameterizedType(Iterable.class, Iterable.class.getTypeParameters()[0]),
   genericType.getType());
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 // If both runtimeType and subclass are not parameterized, return subclass
 // If runtimeType is not parameterized but subclass is, process subclass as a parameterized type
 // If runtimeType is a raw type (i.e. is a parameterized type specified as a Class<?>), we
 // return subclass as a raw type
 if (runtimeType instanceof Class
   && ((subclass.getTypeParameters().length == 0)
     || (getRawType().getTypeParameters().length != 0))) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype =
   genericSubtype.getSupertype((Class) getRawType()).runtimeType;
 return new TypeResolver()
   .where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 // If both runtimeType and subclass are not parameterized, return subclass
 // If runtimeType is not parameterized but subclass is, process subclass as a parameterized type
 // If runtimeType is a raw type (i.e. is a parameterized type specified as a Class<?>), we
 // return subclass as a raw type
 if (runtimeType instanceof Class
   && ((subclass.getTypeParameters().length == 0)
     || (getRawType().getTypeParameters().length != 0))) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype =
   genericSubtype.getSupertype((Class) getRawType()).runtimeType;
 return new TypeResolver()
   .where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

代码示例来源: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.google.guava/guava-tests

public void testToGenericType_staticMemberClass() throws Exception {
 Method getStaticAnonymousClassMethod =
   TypeTokenTest.class.getDeclaredMethod("getStaticAnonymousClass", Object.class);
 ParameterizedType javacReturnType =
   (ParameterizedType) getStaticAnonymousClassMethod.getGenericReturnType();
 ParameterizedType parameterizedType =
   (ParameterizedType) TypeToken.toGenericType(GenericClass.class).getType();
 assertThat(parameterizedType.getOwnerType()).isEqualTo(javacReturnType.getOwnerType());
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

private Type resolveTypeArgsForSubclass(Class<?> subclass) {
 if (runtimeType instanceof Class) {
  // no resolution needed
  return subclass;
 }
 // class Base<A, B> {}
 // class Sub<X, Y> extends Base<X, Y> {}
 // Base<String, Integer>.subtype(Sub.class):
 // Sub<X, Y>.getSupertype(Base.class) => Base<X, Y>
 // => X=String, Y=Integer
 // => Sub<X, Y>=Sub<String, Integer>
 TypeToken<?> genericSubtype = toGenericType(subclass);
 @SuppressWarnings({"rawtypes", "unchecked"}) // subclass isn't <? extends T>
 Type supertypeWithArgsFromSubtype = genericSubtype
   .getSupertype((Class) getRawType())
   .runtimeType;
 return new TypeResolver().where(supertypeWithArgsFromSubtype, runtimeType)
   .resolveType(genericSubtype.runtimeType);
}

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

public void testToGenericType() {
 assertEquals(TypeToken.of(String.class), TypeToken.toGenericType(String.class));
 assertEquals(new TypeToken<int[]>() {}, TypeToken.toGenericType(int[].class));
 @SuppressWarnings("rawtypes") // Iterable.class
 TypeToken<? extends Iterable> genericType = TypeToken.toGenericType(Iterable.class);
 assertEquals(Iterable.class, genericType.getRawType());
 assertEquals(Types.newParameterizedType(Iterable.class, Iterable.class.getTypeParameters()[0]),
   genericType.getType());
}

相关文章

微信公众号

最新文章

更多

TypeToken类方法