类 TypeInfo<T>

java.lang.Object
cn.wjybxx.dsoncodec.TypeInfo<T>
类型参数:
T - T最好使用原始类型,不要再带有泛型,否则你会痛苦的 -- 因为 xxx.class是不包含泛型信息的。

@Immutable public final class TypeInfo<T> extends Object
类型信息

有限泛型

由于Java是伪泛型,而想通过外部库将类型信息省略做到极致,要付出极高的代价。 因此我们禁止泛型递归,即禁止泛型参数也是泛型,因此typeArgs不是TypeInfo类型。 这种程度的支持已经够我们解决大部分问题了,特殊情况下由用户封装一层即可解决。

数组泛型信息

注意:由于Class.getComponentType()不包含泛型信息, 而我们需要这部分数据,因此我们将数组的泛型信息也存储在typeArgs中, 因此不能简单根据泛型参数个数判断是否是泛型类,请通过isGenericType()判断。 ps:数组不是泛型类。
作者:
wjybxx date 2023/3/31
  • 字段详细资料

  • 方法详细资料

    • isPrimitive

      public boolean isPrimitive()
      是否是基础类型
    • isGenericType

      public boolean isGenericType()
      是否是泛型类 注意:这不代表rawType是泛型类,使用时务必小心。
    • getGenericTypeDefinition

      public TypeInfo<?> getGenericTypeDefinition()
      获取泛型原型
    • getGenericArgument

      public TypeInfo<?> getGenericArgument(int idx)
      获取泛型参数
    • isArray

      public boolean isArray()
      是否是数组
    • getComponentType

      public TypeInfo<?> getComponentType()
      获取数组的元素类型
    • makeArrayType

      public TypeInfo<?> makeArrayType()
      构建数组类型
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType)
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType, Class<?> typeArg1)
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType, Class<?> typeArg1, Class<?> typeArg2)
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType, Class<?> typeArg1, Class<?> typeArg2, Class<?> typeArg3)
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType, Class<?>... typeArgs)
    • of

      public static <T> TypeInfo<T> of(Class<T> rawType, List<Class<?>> typeArgs)
    • equals

      public boolean equals(Object o)
      覆盖:
      equals 在类中 Object
    • hashCode

      public int hashCode()
      覆盖:
      hashCode 在类中 Object
    • toString

      public String toString()
      覆盖:
      toString 在类中 Object