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

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

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

TypeToken.isSubtypeOf介绍

[英]Returns true if this type is a subtype of the given type. "Subtype" is defined according to the rules for type arguments introduced with Java generics.
[中]如果此类型是给定类型的子类型,则返回true。“Subtype”是根据Java泛型引入的the rules for type arguments定义的。

代码示例

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

boolean isSupertypeOf(Type subtype) {
  TypeToken<?> type = of(subtype);
  for (Type bound : bounds) {
   if (type.isSubtypeOf(bound) == target) {
    return target;
   }
  }
  return !target;
 }
}

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

boolean isSubtypeOf(Type supertype) {
 for (Type bound : bounds) {
  if (of(bound).isSubtypeOf(supertype) == target) {
   return target;
  }
 }
 return !target;
}

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

/**
 * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
 * according to <a
 * href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.5.1">the rules for type
 * arguments</a> introduced with Java generics.
 *
 * @since 19.0
 */
public final boolean isSupertypeOf(TypeToken<?> type) {
 return type.isSubtypeOf(getType());
}

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

/**
 * Returns true if this type is a supertype of the given {@code type}. "Supertype" is defined
 * according to <a
 * href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.5.1">the rules for type
 * arguments</a> introduced with Java generics.
 *
 * @since 19.0
 */
public final boolean isSupertypeOf(Type type) {
 return of(type).isSubtypeOf(getType());
}

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

/**
 * Returns true if this type is a subtype of the given {@code type}. "Subtype" is defined
 * according to <a
 * href="http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.5.1">the rules for type
 * arguments</a> introduced with Java generics.
 *
 * @since 19.0
 */
public final boolean isSubtypeOf(TypeToken<?> type) {
 return isSubtypeOf(type.getType());
}

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

private boolean isOwnedBySubtypeOf(Type supertype) {
 for (TypeToken<?> type : getTypes()) {
  Type ownerType = type.getOwnerTypeIfPresent();
  if (ownerType != null && of(ownerType).isSubtypeOf(supertype)) {
   return true;
  }
 }
 return false;
}

代码示例来源: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_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_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 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 testSubtypeOfInnerClass_nonStaticAnonymousClass() {
 TypeToken<?> supertype = new TypeToken<Mall<Outdoor>.Shop<Electronics>>() {};
 Class<?> subclass = new Mall<Outdoor>().new Shop<Electronics>() {}.getClass();
 assertTrue(TypeToken.of(subclass).isSubtypeOf(supertype));
}

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

public static void testSubtypeOfStaticAnonymousClass() {
 Class<?> superclass = new Mall<Outdoor>().new Shop<Electronics>() {}.getClass();
 assertTrue(TypeToken.of(superclass).isSubtypeOf(superclass));
 assertFalse(
   TypeToken.of(new Mall<Outdoor>().new Shop<Electronics>() {}.getClass())
     .isSubtypeOf(superclass));
}

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

public void testSubtypeOfNonStaticAnonymousClass() {
 Class<?> superclass = new Mall<Outdoor>().new Shop<Electronics>() {}.getClass();
 assertTrue(TypeToken.of(superclass).isSubtypeOf(superclass));
 assertFalse(
   TypeToken.of(new Mall<Outdoor>().new Shop<Electronics>() {}.getClass())
     .isSubtypeOf(superclass));
}

代码示例来源: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 testSubtypeOfInnerClass_nonStaticAnonymousClass_typeParameterOfOwnerTypeNotMatch() {
 TypeToken<?> supertype = new TypeToken<Mall<Outdoor>.Shop<Electronics>>() {};
 Class<?> subclass = new Mall<Indoor>().new Shop<Electronics>() {}.getClass();
 assertFalse(TypeToken.of(subclass).isSubtypeOf(supertype));
}

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

public void testSubtypeOfInnerClass_nonStaticAnonymousClass_typeParameterOfInnerTypeNotMatch() {
 TypeToken<?> supertype = new TypeToken<Mall<Outdoor>.Shop<Electronics>>() {};
 Class<?> subclass = new Mall<Outdoor>().new Shop<Grocery>() {}.getClass();
 assertFalse(TypeToken.of(subclass).isSubtypeOf(supertype));
}

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

public static void testSubtypeOfInnerClass_staticAnonymousClass() {
 TypeToken<?> supertype = new TypeToken<Mall<Outdoor>.Shop<Electronics>>() {};
 Class<?> subclass = new Mall<Outdoor>().new Shop<Electronics>() {}.getClass();
 assertTrue(TypeToken.of(subclass).isSubtypeOf(supertype));
}

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

private static void assertNotAssignable(TypeToken<?> from, TypeToken<?> to) {
 assertFalse(
   from.getType() + " shouldn't be assignable to " + to.getType(), to.isSupertypeOf(from));
 assertFalse(
   to.getType() + " shouldn't be a supertype of " + from.getType(), to.isSupertypeOf(from));
 assertFalse(
   from.getType() + " shouldn't be a subtype of " + to.getType(), from.isSubtypeOf(to));
}

相关文章

微信公众号

最新文章

更多

TypeToken类方法