类的使用
cn.wjybxx.dsoncodec.TypeInfo
使用TypeInfo的程序包
-
cn.wjybxx.dsoncodec中TypeInfo的使用
声明为TypeInfo的cn.wjybxx.dsoncodec中的字段修饰符和类型字段说明static final TypeInfoTypeInfo.ARRAY_BOOLstatic final TypeInfoTypeInfo.ARRAY_BYTEstatic final TypeInfoTypeInfo.ARRAY_CHARstatic final TypeInfoTypeInfo.ARRAY_DOUBLEstatic final TypeInfoTypeInfo.ARRAY_FLOATstatic final TypeInfoTypeInfo.ARRAY_INTstatic final TypeInfoTypeInfo.ARRAY_LONGstatic final TypeInfoTypeInfo.ARRAY_OBJECTstatic final TypeInfoTypeInfo.ARRAY_SHORTstatic final TypeInfoTypeInfo.ARRAY_STRINGstatic final TypeInfoTypeInfo.ARRAYLISTstatic final TypeInfoTypeInfo.BOOLstatic final TypeInfoTypeInfo.BOXED_BOOLstatic final TypeInfoTypeInfo.BOXED_BYTEstatic final TypeInfoTypeInfo.BOXED_CHARstatic final TypeInfoTypeInfo.BOXED_DOUBLEstatic final TypeInfoTypeInfo.BOXED_FLOATstatic final TypeInfoTypeInfo.BOXED_INTstatic final TypeInfoTypeInfo.BOXED_LONGstatic final TypeInfoTypeInfo.BOXED_SHORTstatic final TypeInfoTypeInfo.BOXED_VOIDstatic final TypeInfoTypeInfo.BYTEstatic final TypeInfoTypeInfo.CHARstatic final TypeInfoTypeInfo.DOUBLEstatic final TypeInfoTypeInfo.FLOATstatic final TypeInfoTypeInfo.HASHMAPstatic final TypeInfoTypeInfo.INTstatic final TypeInfoTypeInfo.LINKED_HASHMAPstatic final TypeInfoTypeInfo.LINKED_HASHSETstatic final TypeInfoTypeInfo.LONGstatic final TypeInfoTypeInfo.OBJECTstatic final TypeInfoTypeInfo.SHORTstatic final TypeInfoTypeInfo.STRINGstatic final TypeInfoTypeInfo.STRING_HASHMAPstatic final TypeInfoTypeInfo.STRING_LINKED_HASHMAPfinal TypeInfoGenericCodecInfo.typeInfofinal TypeInfoTypeMeta.typeInfo关联的类型static final TypeInfoTypeInfo.VOID类型参数类型为TypeInfo的cn.wjybxx.dsoncodec中的字段返回TypeInfo的cn.wjybxx.dsoncodec中的方法修饰符和类型方法说明TypeInfo.box()基础类型装箱DsonCodecCaster.castDecoderType(TypeInfo type) 转换解码类型 1.可以返回子类的Codec,如果子类和当前类数据兼容。DsonCodecCaster.castEncoderType(TypeInfo type) 转换编码类型 1.可以向上转换,因为子类实例可以向上转型,但子类特殊数据将被丢弃。TypeInfo.getComponentType()获取数组的元素类型abstract TypeInfoAbstractDsonCodec.getEncoderType()DsonCodec.getEncoderType()获取负责编解码的类对象 如果可以,在数据兼容的情况下,尽量将泛型'T'声明为抽象类或接口,然后通过动态的TypeInfo来绑定编解码类型。DsonCodecImpl.getEncoderType()DsonObjectReader.getEncoderType()获取当前对象的类型信息DsonObjectWriter.getEncoderType()获取当前对象的类型信息TypeInfo.getRootComponentType()获取最底层数组的元素类型TypeInfo.getTypeArg(int idx) 获取指定下标实参CachedGenericHelper.inheritTypeArgs(Class<?> runtimeType, TypeInfo declaredType) GenericHelper.inheritTypeArgs(Class<?> runtimeType, TypeInfo declaredType) 尝试继承声明类型的泛型参数(可以写入更完整的泛型信息) 1.用户的接口不会收到数组类型。TypeInfo.makeArrayType()构建数组类型TypeInfo.makeArrayType(int rank) 构建数组类型 -- 可用于减少中间对象static TypeInfostatic TypeInfostatic TypeInfostatic TypeInfostatic TypeInfostatic TypeInfostatic TypeInfostatic TypeInfostatic TypeInfo用于继承其它类型的泛型参数static TypeInfo用于继承其它类型的泛型参数返回变量类型为TypeInfo的类型的cn.wjybxx.dsoncodec中的方法修饰符和类型方法说明DsonCodecConfig.getDecoderDic()DsonCodecConfig.getEncoderDic()TypeMetaConfig.getType2MetaMap()参数类型为TypeInfo的cn.wjybxx.dsoncodec中的方法修饰符和类型方法说明配置编解码器DsonCodecConfig.addDecoder(TypeInfo typeInfo, DsonCodec<?> codec) 配置解码器 -- 适用已构造泛型DsonConverterBuilder.addDecoder(TypeInfo typeInfo, DsonCodec<?> codec) DsonCodecConfig.addEncoder(TypeInfo typeInfo, DsonCodec<?> codec) 配置编码器 -- 适用已构造泛型DsonConverterBuilder.addEncoder(TypeInfo typeInfo, DsonCodec<?> codec) DsonCodecConfig.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonCodecConfig.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonCodecConfig.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonConverterBuilder.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonConverterBuilder.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonConverterBuilder.addGenericCodec(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonCodecConfig.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonCodecConfig.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonCodecConfig.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonConverterBuilder.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonConverterBuilder.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonConverterBuilder.addGenericDecoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonCodecConfig.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonCodecConfig.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonCodecConfig.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonConverterBuilder.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType) DsonConverterBuilder.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Class<?> implType) DsonConverterBuilder.addGenericEncoder(TypeInfo genericType, Class<? extends DsonCodec> codecType, Supplier<?> factory) DsonCodecCaster.castDecoderType(TypeInfo type) 转换解码类型 1.可以返回子类的Codec,如果子类和当前类数据兼容。DsonCodecCaster.castEncoderType(TypeInfo type) 转换编码类型 1.可以向上转换,因为子类实例可以向上转型,但子类特殊数据将被丢弃。default <T> TConverter.cloneObject(Object value, TypeInfo declaredType, TypeInfo targetType) <T> TConverter.cloneObject(Object value, TypeInfo declaredType, TypeInfo targetType, Supplier<? extends T> factory) 克隆一个对象。static GenericCodecInfostatic GenericCodecInfo通过实现类创建一个Itemstatic GenericCodecInfoGenericCodecInfo.create(TypeInfo typeInfo, Class<? extends DsonCodec> codecType, Supplier<?> factory) 通过工厂创建一个item<T> T解码字典的key<T> String编码字典的keyboolean避免走到不必要的重载DsonCodec<?> DsonCodecConfig.getDecoder(TypeInfo typeInfo) DsonCodecRegistry.getDecoder(TypeInfo typeInfo) 查找解码器(decoder)。DynamicCodecRegistry.getDecoder(TypeInfo type) DsonCodec<?> DsonCodecConfig.getEncoder(TypeInfo typeInfo) DsonCodecRegistry.getEncoder(TypeInfo typeInfo) 查找编码器(encoder)。DynamicCodecRegistry.getEncoder(TypeInfo type) CachedGenericHelper.inheritTypeArgs(Class<?> runtimeType, TypeInfo declaredType) GenericHelper.inheritTypeArgs(Class<?> runtimeType, TypeInfo declaredType) 尝试继承声明类型的泛型参数(可以写入更完整的泛型信息) 1.用户的接口不会收到数组类型。booleanTypeWriteHelper.isOptimizable(TypeInfo encoderType, TypeInfo declaredType) 测试是否需要写入对象类型信息static TypeInfostatic TypeInfostatic TypeInfostatic TypeInfo用于继承其它类型的泛型参数static TypeInfo用于继承其它类型的泛型参数static TypeMetaTypeMeta.of(TypeInfo typeInfo, ObjectStyle style, String clsName) static TypeMetaTypeMeta.of(TypeInfo typeInfo, ObjectStyle style, String... clsNames) static TypeMetaTypeMeta.of(TypeInfo typeInfo, ObjectStyle style, List<String> clsNames) 通过完整的类型信息查询类型元数据default <T> T<T> T从数据源中读取一个对象 注意:如果对象的声明类型和写入的类型不兼容,则表示投影;factory用于支持将数据读取到既有实例或子类实例上。default <T> T<T> Tdefault <T> TDsonConverter.readFromDson(Reader source, TypeInfo declaredType) <T> TDsonConverter.readFromDson(Reader source, TypeInfo declaredType, Supplier<? extends T> factory) 从数据源中读取一个对象 (默认不关闭reader)default <T> TDsonConverter.readFromDson(CharSequence source, TypeInfo declaredType) <T> TDsonConverter.readFromDson(CharSequence source, TypeInfo declaredType, Supplier<? extends T> factory) 从数据源中读取一个对象default <T> TDsonConverter.readFromDsonValue(DsonValue source, TypeInfo declaredType) <T> TDsonConverter.readFromDsonValue(DsonValue source, TypeInfo declaredType, Supplier<? extends T> factory) DsonCodecImpl.readObject(DsonObjectReader reader, TypeInfo declaredType, Supplier<? extends T> factory) 从输入流中解析指定对象。default <T> TDsonObjectReader.readObject(String name, TypeInfo declaredType) <T> TDsonObjectReader.readObject(String name, TypeInfo declaredType, Supplier<? extends T> factory) 读取嵌套对象 注意: 1.删除给定类型的TypeMeta,主要用于解决冲突DsonCodec<?> DsonCodecConfig.removeDecoder(TypeInfo typeInfo) 删除解码器 -- 适用已构造泛型DsonCodec<?> DsonCodecConfig.removeEncoder(TypeInfo typeInfo) 删除编码器 -- 适用已构造泛型voidDsonObjectReader.setEncoderType(TypeInfo encoderType) 设置当前对象的encoderType 1.java特殊支持,用于读写Object/Array期间查询当前对象的类型信息 2.应当在readStartObject/Array以后调用voidDsonObjectWriter.setEncoderType(TypeInfo encoderType) 设置当前对象的encoderType 1.java特殊支持,用于读写Object/Array期间查询当前对象的类型信息 2.应当在writeStartObject/Array以后调用byte[]将一个对象写入源 注意:如果对象的运行时类型和声明类型一致,则可省去编码结果中的类型信息。default intvoiddefault StringDsonConverter.writeAsDson(Object value, TypeInfo declaredType) DsonConverter.writeAsDson(Object value, TypeInfo declaredType, ObjectStyle style) 将一个对象写入源 如果对象的运行时类型和rawType一致,则会省去编码结果中的类型信息,default voidDsonConverter.writeAsDson(Object value, TypeInfo declaredType, Writer writer) voidDsonConverter.writeAsDson(Object value, TypeInfo declaredType, Writer writer, ObjectStyle style) 将一个对象写入指定writer (默认不关闭writer)DsonConverter.writeAsDsonValue(Object value, TypeInfo declaredType) 将一个对象写为DsonObject或DsonArrayvoidAbstractDsonCodec.writeObject(DsonObjectWriter writer, T inst, TypeInfo declaredType, ObjectStyle style) voidDsonCodec.writeObject(DsonObjectWriter writer, T inst, TypeInfo declaredType, ObjectStyle style) 将对象写入输出流。voidDsonCodecImpl.writeObject(DsonObjectWriter writer, T inst, TypeInfo declaredType, ObjectStyle style) 将对象写入输出流。default <T> voidDsonObjectWriter.writeObject(String name, T value, TypeInfo declaredType) <T> voidDsonObjectWriter.writeObject(String name, T value, TypeInfo declaredType, ObjectStyle style) 写嵌套对象default voidDsonObjectWriter.writeStartArray(ObjectStyle style, TypeInfo encoderType, TypeInfo declaredType) default voidDsonObjectWriter.writeStartArray(String name, ObjectStyle style, TypeInfo encoderType, TypeInfo declaredType) default voidDsonObjectWriter.writeStartObject(ObjectStyle style, TypeInfo encoderType, TypeInfo declaredType) default voidDsonObjectWriter.writeStartObject(String name, ObjectStyle style, TypeInfo encoderType, TypeInfo declaredType) voidDsonObjectWriter.writeTypeInfo(TypeInfo encoderType, TypeInfo declaredType) 写入类型信息 1.该方法应当在writeStartObject/Array后立即调用,写在所有字段之前。类型变量类型为TypeInfo的cn.wjybxx.dsoncodec中的方法参数 -
cn.wjybxx.dsoncodec.codecs中TypeInfo的使用
修饰符和类型字段说明protected final TypeInfoCollectionCodec.encoderTypeprotected final TypeInfoMapCodec.encoderType修饰符和类型方法说明ArrayCodec.getEncoderType()BinaryCodec.getEncoderType()BooleanCodec.getEncoderType()CollectionCodec.getEncoderType()DoubleCodec.getEncoderType()DurationCodec.getEncoderType()EnumCodec.getEncoderType()ExtDateTimeCodec.getEncoderType()FloatCodec.getEncoderType()InstantCodec.getEncoderType()Int32Codec.getEncoderType()Int64Codec.getEncoderType()LocalDateCodec.getEncoderType()LocalDateTimeCodec.getEncoderType()LocalTimeCodec.getEncoderType()MapCodec.getEncoderType()MapEncodeProxyCodec.getEncoderType()MoreArrayCodecs.BooleanArrayCodec.getEncoderType()MoreArrayCodecs.ByteArrayCodec.getEncoderType()MoreArrayCodecs.CharArrayCodec.getEncoderType()MoreArrayCodecs.DoubleArrayCodec.getEncoderType()MoreArrayCodecs.FloatArrayCodec.getEncoderType()MoreArrayCodecs.IntArrayCodec.getEncoderType()MoreArrayCodecs.LongArrayCodec.getEncoderType()MoreArrayCodecs.ShortArrayCodec.getEncoderType()MoreArrayCodecs.StringArrayCodec.getEncoderType()MorePrimitiveCodecs.ByteCodec.getEncoderType()MorePrimitiveCodecs.CharacterCodec.getEncoderType()MorePrimitiveCodecs.ShortCodec.getEncoderType()ObjectLitePtrCodec.getEncoderType()ObjectPtrCodec.getEncoderType()StringCodec.getEncoderType()TimestampCodec.getEncoderType()参数类型为TypeInfo的cn.wjybxx.dsoncodec.codecs中的方法修饰符和类型方法说明voidArrayCodec.writeObject(DsonObjectWriter writer, T[] inst, TypeInfo declaredType, ObjectStyle style) voidBinaryCodec.writeObject(DsonObjectWriter writer, Binary inst, TypeInfo declaredType, ObjectStyle style) voidBooleanCodec.writeObject(DsonObjectWriter writer, Boolean inst, TypeInfo declaredType, ObjectStyle style) voidCollectionCodec.writeObject(DsonObjectWriter writer, Collection<E> inst, TypeInfo declaredType, ObjectStyle style) voidDoubleCodec.writeObject(DsonObjectWriter writer, Double inst, TypeInfo declaredType, ObjectStyle style) voidDurationCodec.writeObject(DsonObjectWriter writer, Duration inst, TypeInfo declaredType, ObjectStyle style) voidEnumCodec.writeObject(DsonObjectWriter writer, T inst, TypeInfo declaredType, ObjectStyle style) voidExtDateTimeCodec.writeObject(DsonObjectWriter writer, ExtDateTime inst, TypeInfo declaredType, ObjectStyle style) voidFloatCodec.writeObject(DsonObjectWriter writer, Float inst, TypeInfo declaredType, ObjectStyle style) voidInstantCodec.writeObject(DsonObjectWriter writer, Instant inst, TypeInfo declaredType, ObjectStyle style) voidInt32Codec.writeObject(DsonObjectWriter writer, Integer inst, TypeInfo declaredType, ObjectStyle style) voidInt64Codec.writeObject(DsonObjectWriter writer, Long inst, TypeInfo declaredType, ObjectStyle style) voidLocalDateCodec.writeObject(DsonObjectWriter writer, LocalDate inst, TypeInfo declaredType, ObjectStyle style) voidLocalDateTimeCodec.writeObject(DsonObjectWriter writer, LocalDateTime inst, TypeInfo declaredType, ObjectStyle style) voidLocalTimeCodec.writeObject(DsonObjectWriter writer, LocalTime inst, TypeInfo declaredType, ObjectStyle style) voidMapCodec.writeObject(DsonObjectWriter writer, Map<K, V> inst, TypeInfo declaredType, ObjectStyle style) voidMapEncodeProxyCodec.writeObject(DsonObjectWriter writer, MapEncodeProxy<V> inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.BooleanArrayCodec.writeObject(DsonObjectWriter writer, boolean[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.ByteArrayCodec.writeObject(DsonObjectWriter writer, byte[] bytes, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.CharArrayCodec.writeObject(DsonObjectWriter writer, char[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.DoubleArrayCodec.writeObject(DsonObjectWriter writer, double[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.FloatArrayCodec.writeObject(DsonObjectWriter writer, float[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.IntArrayCodec.writeObject(DsonObjectWriter writer, int[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.LongArrayCodec.writeObject(DsonObjectWriter writer, long[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.ShortArrayCodec.writeObject(DsonObjectWriter writer, short[] inst, TypeInfo declaredType, ObjectStyle style) voidMoreArrayCodecs.StringArrayCodec.writeObject(DsonObjectWriter writer, String[] inst, TypeInfo declaredType, ObjectStyle style) voidMorePrimitiveCodecs.ByteCodec.writeObject(DsonObjectWriter writer, Byte inst, TypeInfo declaredType, ObjectStyle style) voidMorePrimitiveCodecs.CharacterCodec.writeObject(DsonObjectWriter writer, Character inst, TypeInfo declaredType, ObjectStyle style) voidMorePrimitiveCodecs.ShortCodec.writeObject(DsonObjectWriter writer, Short inst, TypeInfo declaredType, ObjectStyle style) voidObjectLitePtrCodec.writeObject(DsonObjectWriter writer, ObjectLitePtr inst, TypeInfo declaredType, ObjectStyle style) voidObjectPtrCodec.writeObject(DsonObjectWriter writer, ObjectPtr inst, TypeInfo declaredType, ObjectStyle style) voidStringCodec.writeObject(DsonObjectWriter writer, String inst, TypeInfo declaredType, ObjectStyle style) voidTimestampCodec.writeObject(DsonObjectWriter writer, Timestamp inst, TypeInfo declaredType, ObjectStyle style) 参数类型为TypeInfo的cn.wjybxx.dsoncodec.codecs中的构造器限定符构造器说明ArrayCodec(TypeInfo encoderType) CollectionCodec(TypeInfo encoderType) CollectionCodec(TypeInfo encoderType, Supplier<? extends Collection<E>> factory) MapEncodeProxyCodec(TypeInfo encoderType)