本文整理了Java中com.google.common.reflect.TypeToken.getSupertype()
方法的一些代码示例,展示了TypeToken.getSupertype()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TypeToken.getSupertype()
方法的具体详情如下:
包路径:com.google.common.reflect.TypeToken
类名称:TypeToken
方法名:getSupertype
[英]Returns the generic form of superclass. For example, if this is ArrayList, Iterable is returned given the input Iterable.class.
[中]返回超类的一般形式。例如,如果这是ArrayList,则在给定输入Iterable的情况下返回Iterable。班
代码示例来源:origin: google/guava
private TypeToken<? super T> getSupertypeFromUpperBounds(
Class<? super T> supertype, Type[] upperBounds) {
for (Type upperBound : upperBounds) {
@SuppressWarnings("unchecked") // T's upperbound is <? super T>.
TypeToken<? super T> bound = (TypeToken<? super T>) of(upperBound);
if (bound.isSubtypeOf(supertype)) {
@SuppressWarnings({"rawtypes", "unchecked"}) // guarded by the isSubtypeOf check.
TypeToken<? super T> result = bound.getSupertype((Class) supertype);
return result;
}
}
throw new IllegalArgumentException(supertype + " isn't a super type of " + this);
}
代码示例来源:origin: google/guava
private TypeToken<? super T> getArraySupertype(Class<? super T> supertype) {
// with component type, we have lost generic type information
// Use raw type so that compiler allows us to call getSupertype()
@SuppressWarnings("rawtypes")
TypeToken componentType =
checkNotNull(getComponentType(), "%s isn't a super type of %s", supertype, this);
// array is covariant. component type is super type, so is the array type.
@SuppressWarnings("unchecked") // going from raw type back to generics
TypeToken<?> componentSupertype = componentType.getSupertype(supertype.getComponentType());
@SuppressWarnings("unchecked") // component type is super type, so is array type.
TypeToken<? super T> result =
(TypeToken<? super T>)
// If we are passed with int[].class, don't turn it to GenericArrayType
of(newArrayClassOrGenericArrayType(componentSupertype.runtimeType));
return result;
}
代码示例来源:origin: google/j2objc
private TypeToken<? super T> getSupertypeFromUpperBounds(
Class<? super T> supertype, Type[] upperBounds) {
for (Type upperBound : upperBounds) {
@SuppressWarnings("unchecked") // T's upperbound is <? super T>.
TypeToken<? super T> bound = (TypeToken<? super T>) of(upperBound);
if (bound.isSubtypeOf(supertype)) {
@SuppressWarnings({"rawtypes", "unchecked"}) // guarded by the isSubtypeOf check.
TypeToken<? super T> result = bound.getSupertype((Class) supertype);
return result;
}
}
throw new IllegalArgumentException(supertype + " isn't a super type of " + this);
}
代码示例来源:origin: google/j2objc
private TypeToken<? super T> getArraySupertype(Class<? super T> supertype) {
// with component type, we have lost generic type information
// Use raw type so that compiler allows us to call getSupertype()
@SuppressWarnings("rawtypes")
TypeToken componentType =
checkNotNull(getComponentType(), "%s isn't a super type of %s", supertype, this);
// array is covariant. component type is super type, so is the array type.
@SuppressWarnings("unchecked") // going from raw type back to generics
TypeToken<?> componentSupertype = componentType.getSupertype(supertype.getComponentType());
@SuppressWarnings("unchecked") // component type is super type, so is array type.
TypeToken<? super T> result =
(TypeToken<? super T>)
// If we are passed with int[].class, don't turn it to GenericArrayType
of(newArrayClassOrGenericArrayType(componentSupertype.runtimeType));
return result;
}
代码示例来源:origin: wildfly/wildfly
private TypeToken<? super T> getSupertypeFromUpperBounds(
Class<? super T> supertype, Type[] upperBounds) {
for (Type upperBound : upperBounds) {
@SuppressWarnings("unchecked") // T's upperbound is <? super T>.
TypeToken<? super T> bound = (TypeToken<? super T>) of(upperBound);
if (bound.isSubtypeOf(supertype)) {
@SuppressWarnings({"rawtypes", "unchecked"}) // guarded by the isSubtypeOf check.
TypeToken<? super T> result = bound.getSupertype((Class) supertype);
return result;
}
}
throw new IllegalArgumentException(supertype + " isn't a super type of " + this);
}
代码示例来源:origin: google/guava
@SuppressWarnings({"rawtypes", "unchecked"})
private static Type getSupertype(Type type, Class<?> superclass) {
Class rawType = superclass;
return TypeToken.of(type).getSupertype(rawType).getType();
}
代码示例来源: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: wildfly/wildfly
private TypeToken<? super T> getArraySupertype(Class<? super T> supertype) {
// with component type, we have lost generic type information
// Use raw type so that compiler allows us to call getSupertype()
@SuppressWarnings("rawtypes")
TypeToken componentType =
checkNotNull(getComponentType(), "%s isn't a super type of %s", supertype, this);
// array is covariant. component type is super type, so is the array type.
@SuppressWarnings("unchecked") // going from raw type back to generics
TypeToken<?> componentSupertype = componentType.getSupertype(supertype.getComponentType());
@SuppressWarnings("unchecked") // component type is super type, so is array type.
TypeToken<? super T> result =
(TypeToken<? super T>)
// If we are passed with int[].class, don't turn it to GenericArrayType
of(newArrayClassOrGenericArrayType(componentSupertype.runtimeType));
return result;
}
代码示例来源:origin: google/guava
public void testGetSupertype_withArray() {
assertEquals(
new TypeToken<Iterable<List<String>>[]>() {},
TypeToken.of(StringListIterable[].class).getSupertype(Iterable[].class));
assertEquals(int[].class, TypeToken.of(int[].class).getSupertype(int[].class).getType());
assertEquals(Object.class, TypeToken.of(int[].class).getSupertype(Object.class).getType());
assertEquals(int[][].class, TypeToken.of(int[][].class).getSupertype(int[][].class).getType());
assertEquals(
Object[].class, TypeToken.of(String[].class).getSupertype(Object[].class).getType());
assertEquals(Object.class, TypeToken.of(String[].class).getSupertype(Object.class).getType());
}
代码示例来源:origin: google/guava
public <T extends Iterable<String>> void testGetSupertype_fromTypeVariable() {
@SuppressWarnings("unchecked") // to construct TypeToken<T> from TypeToken.of()
TypeToken<T> typeVariableToken = (TypeToken<T>) TypeToken.of(new TypeCapture<T>() {}.capture());
assertEquals(
new TypeToken<Iterable<String>>() {}, typeVariableToken.getSupertype(Iterable.class));
}
代码示例来源: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/guava
public void testGetSupertype_chained() {
@SuppressWarnings("unchecked") // StringListIterable extensd ListIterable<String>
TypeToken<ListIterable<String>> listIterableType =
(TypeToken<ListIterable<String>>)
TypeToken.of(StringListIterable.class).getSupertype(ListIterable.class);
ParameterizedType expectedType =
Types.newParameterizedType(
Iterable.class, Types.newParameterizedType(List.class, String.class));
assertEquals(expectedType, listIterableType.getSupertype(Iterable.class).getType());
}
代码示例来源:origin: google/guava
public void testGetSupertype_fullyGenericType() {
ParameterizedType expectedType =
Types.newParameterizedType(
Map.class,
ListMap.class.getTypeParameters()[0],
Types.newParameterizedType(List.class, ListMap.class.getTypeParameters()[1]));
assertEquals(expectedType, TypeToken.of(ListMap.class).getSupertype(Map.class).getType());
}
代码示例来源:origin: google/guava
public void testGetSupertype_fromWildcard() {
@SuppressWarnings("unchecked") // can't do new TypeToken<? extends ...>() {}
TypeToken<? extends List<String>> type =
(TypeToken<? extends List<String>>)
TypeToken.of(Types.subtypeOf(new TypeToken<List<String>>() {}.getType()));
assertEquals(new TypeToken<Iterable<String>>() {}, type.getSupertype(Iterable.class));
}
代码示例来源: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: google/guava
public void testGetSupertype_withTypeVariable() {
ParameterizedType expectedType =
Types.newParameterizedType(
Iterable.class,
Types.newParameterizedType(List.class, ListIterable.class.getTypeParameters()[0]));
assertEquals(
expectedType, TypeToken.of(ListIterable.class).getSupertype(Iterable.class).getType());
}
代码示例来源:origin: google/guava
public void testGetSupertype_withoutTypeVariable() {
ParameterizedType expectedType =
Types.newParameterizedType(
Iterable.class, Types.newParameterizedType(List.class, String.class));
assertEquals(
expectedType,
TypeToken.of(StringListIterable.class).getSupertype(Iterable.class).getType());
}
代码示例来源:origin: co.cask.cdap/cdap-app-fabric
/**
* Returns a resolved {@link TypeToken} of the given super type of the class.
*
* @param userClass the user class of which we want the TypeToken
* @param superType Super type of the class
* @param <V> Type of the super type
* @return A resolved {@link TypeToken}
*/
@SuppressWarnings("unchecked")
private static <V> TypeToken<V> resolveClass(Class<? extends V> userClass, Class<V> superType) {
return (TypeToken<V>) TypeToken.of(userClass).getSupertype(superType);
}
代码示例来源:origin: com.google.caliper/caliper
private static <K, V> TypeToken<Map<K, List<V>>> getMapOfListsToken(
TypeToken<ListMultimap<K, V>> from) {
ParameterizedType rawType = (ParameterizedType) from.getSupertype(ListMultimap.class).getType();
@SuppressWarnings("unchecked") // key type is K
TypeToken<K> keyType = (TypeToken<K>) TypeToken.of(rawType.getActualTypeArguments()[0]);
@SuppressWarnings("unchecked") // value type is V
TypeToken<V> valueType = (TypeToken<V>) TypeToken.of(rawType.getActualTypeArguments()[1]);
return new TypeToken<Map<K, List<V>>>() {}
.where(new TypeParameter<K>() {}, keyType)
.where(new TypeParameter<V>() {}, valueType);
}
代码示例来源:origin: net.trajano.caliper/caliper
@SuppressWarnings("serial")
private static <K, V> TypeToken<Map<K, List<V>>> getMapOfListsToken(
TypeToken<ListMultimap<K, V>> from) {
ParameterizedType rawType = (ParameterizedType) from.getSupertype(ListMultimap.class).getType();
@SuppressWarnings("unchecked") // key type is K
TypeToken<K> keyType = (TypeToken<K>) TypeToken.of(rawType.getActualTypeArguments()[0]);
@SuppressWarnings("unchecked") // value type is V
TypeToken<V> valueType = (TypeToken<V>) TypeToken.of(rawType.getActualTypeArguments()[1]);
return new TypeToken<Map<K, List<V>>>() {}
.where(new TypeParameter<K>() {}, keyType)
.where(new TypeParameter<V>() {}, valueType);
}
内容来源于网络,如有侵权,请联系作者删除!