You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jackson/Spring泛型子类反序列化问题(Kotlin环境)

看起来你已经搭建了一个很棒的基础框架!我帮你补全并优化了这套轴过滤器的实现,让它更贴合Kotlin+Spring的使用场景:

// 抽象基类:定义所有轴过滤器的通用类型边界
abstract class AxisFilter<T : Comparable<T>>()

// 单轴过滤器:基于单一值的过滤逻辑
data class SingleAxisFilter<T : Comparable<T>>(
    val value: T,
    val isAbove: Boolean?, // null 表示不限制上下方向
    val isMatch: Boolean    // 是否需要精确匹配value
) : AxisFilter<T>()

// 双轴过滤器:基于范围的过滤逻辑
data class DualAxisFilter<T : Comparable<T>>(
    val lowerBound: T,
    val upperBound: T,
    val includeBounds: Boolean = true // 可选参数:是否包含边界值,默认true
) : AxisFilter<T>()

关键细节说明:

  • 抽象基类AxisFilter<T>:通过泛型约束T : Comparable<T>,确保所有子类的过滤值都支持比较操作,这是实现区间、大小过滤的基础。作为抽象类,它只承担类型标记的作用,不需要实现具体方法。
  • SingleAxisFilter:适用于单一值的过滤场景,比如"筛选价格大于100的商品"或者"精确匹配ID为123的用户"。isAbove设为null时,可以只启用精确匹配逻辑,灵活度很高。
  • DualAxisFilter:专门处理范围过滤,比如"筛选年龄在18-30之间的用户"。新增的includeBounds参数是一个实用优化,让你可以选择是否包含上下边界(比如是否包含刚好18岁或30岁的用户)。

Spring环境下的使用小提示:

因为都是Kotlin的data class,它们天生具备良好的序列化/反序列化能力,你可以直接用@ModelAttribute接收前端传来的过滤参数,或者作为@RequestBody的请求体对象,Spring会自动处理参数绑定。

内容的提问来源于stack exchange,提问作者Dante

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:58:55