Package org.miaixz.bus.core.convert
Class AbstractConverter
java.lang.Object
org.miaixz.bus.core.convert.AbstractConverter
- All Implemented Interfaces:
Serializable,Converter
- Direct Known Subclasses:
ArrayConverter,AtomicBooleanConverter,AtomicIntegerArrayConverter,AtomicLongArrayConverter,AtomicReferenceConverter,BooleanConverter,CalendarConverter,CastConverter,CharacterConverter,CharsetConverter,ClassConverter,CurrencyConverter,DateConverter,DurationConverter,EnumConverter,LocaleConverter,NumberConverter,OptConverter,OptionalConverter,PathConverter,PeriodConverter,PrimitiveConverter,RecordConverter,ReferenceConverter,StackTraceElementConverter,StringConverter,TemporalAccessorConverter,TimeZoneConverter,URIConverter,URLConverter,UUIDConverter,XMLGregorianCalendarConverter,ZoneIdConverter
抽象转换器,提供通用的转换逻辑,同时通过convertInternal实现对应类型的专属逻辑 转换器不会抛出转换异常,转换失败时会返回
null
抽象转换器的默认逻辑不适用于有泛型参数的对象,如Map、Collection、Entry等。通用逻辑包括:
- value为
null时返回null - 目标类型是
null或者TypeVariable时,抛出ConvertException异常 - 目标类型非class时,抛出
IllegalArgumentException - 目标类型为值的父类或同类,直接强转返回
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription转换为指定类型 如果类型无法确定,将读取默认值的类型做为目标类型protected abstract ObjectconvertInternal(Class<?> targetClass, Object value) 内部转换器,被convert(Type, Object)调用,实现基本转换逻辑 内部转换器转换后如果转换失败可以做如下操作,处理结果都为返回默认值:protected StringconvertToString(Object value) 值转为String,用于内部转换中需要使用String中转的情况 转换规则为:
-
Constructor Details
-
AbstractConverter
public AbstractConverter()
-
-
Method Details
-
convert
Description copied from interface:Converter转换为指定类型 如果类型无法确定,将读取默认值的类型做为目标类型- Specified by:
convertin interfaceConverter- Parameters:
targetType- 目标Type,非泛型类使用value- 原始值,如果对象实现了此接口,则value为this- Returns:
- 转换后的值
- Throws:
ConvertException- 转换无法正常完成或转换异常时抛出此异常
-
convertInternal
内部转换器,被convert(Type, Object)调用,实现基本转换逻辑 内部转换器转换后如果转换失败可以做如下操作,处理结果都为返回默认值:1、返回
null2、抛出一个RuntimeException异常- Parameters:
targetClass- 目标类型value- 值- Returns:
- 转换后的类型
-
convertToString
值转为String,用于内部转换中需要使用String中转的情况 转换规则为:1、字符串类型将被强转 2、数组将被转换为逗号分隔的字符串 3、其它类型将调用默认的toString()方法
- Parameters:
value- 值- Returns:
- String
-