跳到主要内容

Converter

Converter 是一个轻量的数据类型转换工具类,适合在脚本、表达式、模型投影或后端代码里把“来源不稳定的值”转成更明确的 Java 类型。

Maven 包: com.ouroboros:ouroboros-util

Java 包: com.ouroboros.util

什么时候看这页

  • 你拿到的是 Object、表单值、配置值或 JSON 反序列化后的值
  • 你想在脚本里快速把字符串转数字、布尔或日期字符串
  • 你想确认转换失败时返回什么

先理解它的风格

Converter 的整体风格是“尽量转换,失败返回 null 或默认布尔值”,而不是大量抛异常。

这意味着:

  • 数字类转换失败通常返回 null
  • toString(null) 返回 null
  • toBoolean(null) 返回 false

如果你的业务对“转换失败”很敏感,最好在调用后继续显式判空。

方法总览

方法返回值类型说明
toByte(Object value)Byte?转为 Byte
toShort(Object value)Short?转为 Short
toInteger(Object value)Integer?转为 Integer
toLong(Object value)Long?转为 Long
toFloat(Object value)Float?转为 Float
toDouble(Object value)Double?转为 Double
toBigInteger(Object value)BigInteger?转为 BigInteger
toBigDecimal(Object value)BigDecimal?转为 BigDecimal
toString(Object value)String?转为字符串
toBoolean(Object value)Boolean转为布尔值

数字转换

支持的常见输入

数字相关方法通常支持:

  • 已经是目标数字类型
  • 任意 Number
  • 字符串或其他 CharSequence

对于字符串输入,当前实现会先去掉逗号再解析,因此像 "1,234" 这类值也能被正常转换。

Integer i = Converter.toInteger("123");
Long l = Converter.toLong("1,234");
BigDecimal amount = Converter.toBigDecimal("99.50");

转换失败时会怎样

如果不能成功解析,通常返回 null

Integer value = Converter.toInteger("abc"); // null

toString(Object value)

toString 除了做普通对象转字符串,还对日期类型做了额外处理:

  • LocalDateTime
  • LocalDate
  • Date

这些值会通过 Dates 工具类格式化,而不是直接走默认 toString()

String text = Converter.toString(LocalDate.now());

如果你需要更精确控制日期格式,建议直接看 Dates

toBoolean(Object value)

toBoolean 是这里最值得单独注意的方法。

当前行为可以这样理解

  • null -> false
  • Boolean -> 原值
  • 数字 0 -> false
  • 0 数字 -> true
  • 空字符串 -> false
  • "true" / "false" -> 按布尔语义解析
  • "0" / "1" -> 按数字语义解析
  • 其他非空字符串 -> true

这意味着下面这种结果是符合当前实现的:

Converter.toBoolean(null)     // false
Converter.toBoolean(0) // false
Converter.toBoolean(1) // true
Converter.toBoolean("false") // false
Converter.toBoolean("abc") // true

如果你对布尔语义要求非常严格,不建议把任意非空字符串都直接交给 toBoolean

使用建议

  • 表单值、配置值、脚本入参是 Object 时,优先先过一层 Converter
  • 做金额、数量、编码这类敏感字段时,转换后要显式判空
  • 要处理日期显示时,Converter.toString 适合快速输出;要指定格式时改用 Dates

下一步看哪里

  • 想看日期工具:看 Dates
  • 想看 Map 工具:看 Maps
  • 想看脚本里怎么直接使用 Converter:看 脚本上下文