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

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

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

TypeToken.getRawType介绍

[英]Returns the raw type of T. Formally speaking, if T is returned by java.lang.reflect.Method#getGenericReturnType, the raw type is what's returned by java.lang.reflect.Method#getReturnType of the same method object. Specifically:

  • If T is a Class itself, T itself is returned.
  • If T is a ParameterizedType, the raw type of the parameterized type is returned.
  • If T is a GenericArrayType, the returned type is the corresponding array class. For example: List[] => List[].
  • If T is a type variable or a wildcard type, the raw type of the first upper bound is returned. For example: => Foo.
    [中]返回T的原始类型。正式地说,如果T是由java返回的。朗,反思一下。方法#getGenericReturnType,原始类型是java返回的类型。朗,反思一下。方法#获取同一方法对象的返回类型。明确地:
    *如果T本身是一个类,则返回T本身。
    *如果T是参数化类型,则返回参数化类型的原始类型。
    *如果T是GenericarArrayType,则返回的类型是相应的数组类。例如:List[]=>List[]。
    *如果T是类型变量或通配符类型,则返回第一个上限的原始类型。例如:=>Foo。

代码示例

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

@Override
 public boolean apply(TypeToken<?> type) {
  return type.getRawType().isInterface();
 }
}

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

private ImmutableList<TypeToken<? super T>> boundsAsInterfaces(Type[] bounds) {
 ImmutableList.Builder<TypeToken<? super T>> builder = ImmutableList.builder();
 for (Type bound : bounds) {
  @SuppressWarnings("unchecked") // upper bound of T
  TypeToken<? super T> boundType = (TypeToken<? super T>) of(bound);
  if (boundType.getRawType().isInterface()) {
   builder.add(boundType);
  }
 }
 return builder.build();
}

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

private @Nullable TypeToken<? super T> boundAsSuperclass(Type bound) {
 TypeToken<?> token = of(bound);
 if (token.getRawType().isInterface()) {
  return null;
 }
 @SuppressWarnings("unchecked") // only upper bound of T is passed in.
 TypeToken<? super T> superclass = (TypeToken<? super T>) token;
 return superclass;
}

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

static void verifyConsitentRawType() {
  for (Method method : RawTypeConsistencyTester.class.getDeclaredMethods()) {
   assertEquals(
     method.getReturnType(), TypeToken.of(method.getGenericReturnType()).getRawType());
   for (int i = 0; i < method.getParameterTypes().length; i++) {
    assertEquals(
      method.getParameterTypes()[i],
      TypeToken.of(method.getGenericParameterTypes()[i]).getRawType());
   }
  }
 }
}

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

public void testClassWrapper() {
 TypeToken<String> typeExpression = TypeToken.of(String.class);
 assertEquals(String.class, typeExpression.getType());
 assertEquals(String.class, typeExpression.getRawType());
}

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

public void testMultiDimensionalGenericArrayType() {
 TypeToken<List<Long>[][][]> token = new TypeToken<List<Long>[][][]>() {};
 assertEquals(List[][][].class, token.getRawType());
 assertThat(token.getType()).isInstanceOf(GenericArrayType.class);
}

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

public void testGenericArrayType() {
 TypeToken<List<String>[]> token = new TypeToken<List<String>[]>() {};
 assertEquals(List[].class, token.getRawType());
 assertThat(token.getType()).isInstanceOf(GenericArrayType.class);
}

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

public void testWildcardCaptured_field_upperBound() throws Exception {
 TypeToken<Holder<?>> type = new TypeToken<Holder<?>>() {};
 TypeToken<?> matrixType =
   type.resolveType(Holder.class.getDeclaredField("matrix").getGenericType());
 assertEquals(List[].class, matrixType.getRawType());
 assertThat(matrixType.getType()).isNotEqualTo(new TypeToken<List<?>[]>() {}.getType());
}

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

public void testGetGenericSuperclass_withSuperclass() {
 TypeToken<? super ArrayList<String>> superToken =
   new TypeToken<ArrayList<String>>() {}.getGenericSuperclass();
 assertEquals(ArrayList.class.getSuperclass(), superToken.getRawType());
 assertEquals(
   String.class, ((ParameterizedType) superToken.getType()).getActualTypeArguments()[0]);
 assertEquals(TypeToken.of(Base.class), TypeToken.of(Sub.class).getGenericSuperclass());
 assertEquals(TypeToken.of(Object.class), TypeToken.of(Sub[].class).getGenericSuperclass());
}

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

public void testGetSubtype_genericSubtypeOfGenericTypeWithFewerParameters() {
 TypeToken<List<String>> supertype = new TypeToken<List<String>>() {};
 TypeToken<MySpecialList<String, ?>> subtype = new TypeToken<MySpecialList<String, ?>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 ParameterizedType actualSubtype =
   (ParameterizedType) supertype.getSubtype(subtype.getRawType()).getType();
 assertEquals(MySpecialList.class, actualSubtype.getRawType());
 assertThat(actualSubtype.getActualTypeArguments()[0]).isEqualTo(String.class);
 assertThat(actualSubtype.getActualTypeArguments()[1]).isInstanceOf(TypeVariable.class);
 assertTrue(TypeToken.of(actualSubtype).isSubtypeOf(supertype));
}

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

public void testGetSubtype_toWildcardWithBounds() {
 class TwoTypeArgs<K, V> {}
 class StringForFirstTypeArg<V> extends TwoTypeArgs<String, V> {}
 TypeToken<TwoTypeArgs<?, ? extends Number>> supertype =
   new TypeToken<TwoTypeArgs<?, ? extends Number>>() {};
 TypeToken<StringForFirstTypeArg<Integer>> subtype =
   new TypeToken<StringForFirstTypeArg<Integer>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 // TODO(benyu): This should check equality to an expected value, see discussion in cl/98674873
 TypeToken<?> unused = supertype.getSubtype(subtype.getRawType());
}

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

public void testGetSubtype_genericSubtypeOfNonGenericType() {
 TypeToken<Serializable> supertype = new TypeToken<Serializable>() {};
 TypeToken<ArrayList<String>> subtype = new TypeToken<ArrayList<String>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 ParameterizedType actualSubtype =
   (ParameterizedType) supertype.getSubtype(subtype.getRawType()).getType();
 assertEquals(ArrayList.class, actualSubtype.getRawType());
 assertThat(actualSubtype.getActualTypeArguments()[0]).isInstanceOf(TypeVariable.class);
 assertTrue(TypeToken.of(actualSubtype).isSubtypeOf(supertype));
}

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

public void testWildcardCaptured_methodParameter_upperBound() throws Exception {
 TypeToken<Holder<?>> type = new TypeToken<Holder<?>>() {};
 ImmutableList<Parameter> parameters =
   type.method(Holder.class.getDeclaredMethod("setList", List.class)).getParameters();
 assertThat(parameters).hasSize(1);
 TypeToken<?> parameterType = parameters.get(0).getType();
 assertEquals(List.class, parameterType.getRawType());
 assertFalse(
   parameterType.getType().toString(),
   parameterType.isSupertypeOf(new TypeToken<List<Integer>>() {}));
}

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

public void testGetSubtype_baseClassWithNoTypeArgs() {
 class SingleGenericExtendsBase<T> extends Base {}
 TypeToken<Base> supertype = new TypeToken<Base>() {};
 TypeToken<SingleGenericExtendsBase<String>> subtype =
   new TypeToken<SingleGenericExtendsBase<String>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 ParameterizedType actualSubtype =
   (ParameterizedType) supertype.getSubtype(subtype.getRawType()).getType();
 assertEquals(SingleGenericExtendsBase.class, actualSubtype.getRawType());
}

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

public void testGetSubtype_baseClassInGenericClassWithNoTypeArgs() {
 class SingleGenericExtendsBase<T> implements GenericClass.Base {}
 TypeToken<GenericClass.Base> supertype = new TypeToken<GenericClass.Base>() {};
 TypeToken<SingleGenericExtendsBase<String>> subtype =
   new TypeToken<SingleGenericExtendsBase<String>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 ParameterizedType actualSubtype =
   (ParameterizedType) supertype.getSubtype(subtype.getRawType()).getType();
 assertEquals(SingleGenericExtendsBase.class, actualSubtype.getRawType());
 assertTrue(TypeToken.of(actualSubtype).isSubtypeOf(supertype));
}

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

public void testGetSubtype_toWildcard() {
 class TwoTypeArgs<K, V> {}
 class StringForFirstTypeArg<V> extends TwoTypeArgs<String, V> {}
 TypeToken<TwoTypeArgs<?, ?>> supertype = new TypeToken<TwoTypeArgs<?, ?>>() {};
 TypeToken<StringForFirstTypeArg<String>> subtype =
   new TypeToken<StringForFirstTypeArg<String>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 assertEquals(
   new TypeToken<StringForFirstTypeArg<?>>() {}, supertype.getSubtype(subtype.getRawType()));
}

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

public <T> void testGetSubtype_manyGenericArgs() {
 class FourTypeArgs<T1, T2, T3, T4> {}
 class ThreeTypeArgs<T1, T2, T3> extends FourTypeArgs<T1, T2, T3, String> {}
 TypeToken<FourTypeArgs<T, Integer, ?, ?>> supertype =
   new TypeToken<FourTypeArgs<T, Integer, ?, ?>>() {};
 TypeToken<ThreeTypeArgs<T, Integer, String>> subtype =
   new TypeToken<ThreeTypeArgs<T, Integer, String>>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 assertEquals(
   new TypeToken<ThreeTypeArgs<T, Integer, ?>>() {},
   supertype.getSubtype(subtype.getRawType()));
}

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

public void testGetSubtype_genericSubtypeOfRawTypeWithFewerTypeParameters() {
 TypeToken<List> supertype = new TypeToken<List>() {};
 TypeToken<MySpecialList> subtype = new TypeToken<MySpecialList>() {};
 assertTrue(subtype.isSubtypeOf(supertype));
 Class<?> actualSubtype = (Class<?>) supertype.getSubtype(subtype.getRawType()).getType();
 assertEquals(MySpecialList.class, actualSubtype);
 assertTrue(TypeToken.of(actualSubtype).isSubtypeOf(supertype));
}

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

public void testWhere() {
 assertEquals(new TypeToken<Map<String, Integer>>() {}, mapOf(String.class, Integer.class));
 assertEquals(new TypeToken<int[]>() {}, arrayOf(int.class));
 assertEquals(int[].class, arrayOf(int.class).getRawType());
}

相关文章

微信公众号

最新文章

更多

TypeToken类方法