当前位置: 首页 > news >正文

全球访问量top100网站建设银行官方网站-云服务

全球访问量top100网站,建设银行官方网站-云服务,做跨境电商一件代发的网站,网页游戏网站大全突袭以下是针对该 JSON 结构的 泛型 和 非泛型 两种 Java 实体类实现方案,并分析它们的区别和适用场景:方案 1:使用泛型(推荐) 特点:灵活复用,适合统一响应结构 import lombok.Data; import java.ti…

以下是针对该 JSON 结构的 泛型非泛型 两种 Java 实体类实现方案,并分析它们的区别和适用场景:


方案 1:使用泛型(推荐)

特点:灵活复用,适合统一响应结构

import lombok.Data;
import java.time.OffsetDateTime;
import java.util.List;// 1. 基础响应泛型类
@Data
public class ApiResponse<T> {private Boolean success;private String code;private String message;private T result; // 泛型接收不同数据类型
}// 2. 分页结果泛型类
@Data
public class PageResult<T> {private List<T> records;private Integer total;private Integer size;private Integer current;private List<Object> orders;private Boolean optimizeCountSql;private Boolean hitCount;private Boolean searchCount;private Integer pages;
}// 3. 具体数据实体
@Data
public class ConferenceRoom {private Long conferenceId;private String conferenceName;private String conferenceNumber;private OffsetDateTime createDate;// 其他字段...
}// 使用示例
ApiResponse<PageResult<ConferenceRoom>> response = objectMapper.readValue(json, new TypeReference<ApiResponse<PageResult<ConferenceRoom>>>() {});

方案 2:非泛型(直接定义)

特点:直观简单,适合固定结构

import lombok.Data;
import java.time.OffsetDateTime;
import java.util.List;// 1. 完整响应实体(无泛型)
@Data
public class ConferenceApiResponse {private Boolean success;private String code;private String message;private ConferenceResult result;
}// 2. 分页结果实体
@Data
public class ConferenceResult {private List<ConferenceRoom> records;private Integer total;private Integer size;private Integer current;private List<Object> orders;private Boolean optimizeCountSql;private Boolean hitCount;private Boolean searchCount;private Integer pages;
}// 3. 会议室实体(同方案1)
@Data
public class ConferenceRoom {private Long conferenceId;private String conferenceName;// 其他字段...
}// 使用示例
ConferenceApiResponse response = objectMapper.readValue(json, ConferenceApiResponse.class);

核心区别对比

对比维度泛型实现非泛型实现
代码复用性✅ 一套结构适配所有接口❌ 每套数据结构需单独定义类
可维护性修改基类即可影响所有接口需逐个修改相似结构的类
类型安全编译时检查类型匹配需手动保证字段一致性
JSON解析复杂度需使用TypeReference处理嵌套泛型直接解析,无需处理泛型擦除
适用场景多接口统一响应格式的系统接口结构固定且简单的场景
扩展性轻松支持新数据类型新增数据类型需定义新类

如何选择?

  1. 选泛型 当:

    • 项目有统一的响应格式标准(如success/code/message/result
    • 需要处理多种数据类型(如分页的用户、订单、会议室等)
    • 预期未来会新增大量相似结构的接口
  2. 选非泛型 当:

    • 接口结构完全固定且不会扩展
    • 对泛型理解不深,追求简单实现
    • 需要快速原型开发(减少泛型带来的初始复杂度)

注意事项

  1. 泛型的局限性

    • 运行时类型擦除:List<ConferenceRoom> 在运行时变为 List,需通过TypeReference保留类型信息
    // 必须这样解析泛型
    mapper.readValue(json, new TypeReference<ApiResponse<PageResult<ConferenceRoom>>>() {});
    
  2. 非泛型的冗余

    • 如果系统有20个分页接口,需要定义20个XxxApiResponseXxxResult
  3. 折中方案

    • 对少量特殊接口用非泛型,大部分统一接口用泛型
http://www.dtcms.com/a/618759.html

相关文章:

  • 小梦音乐下载 1.0.5 | 提供三条音源,支持多种音质选择和批量下载的音乐下载工具
  • GIS:揭开你神秘的面纱
  • 怎么做网站小图标有的网站域名解析错误
  • 安徽省网站肥建设网站湖北望新建设有限公司网站
  • 机器学习周报二十二
  • 计算二叉树的深度 | C语言
  • 什么网站算是h5做的网络推广企划
  • 传导案例:某医疗仪器传导骚扰整改案例
  • 做跨境电商有没推荐的网站新闻稿件代发平台
  • C++篇(18)类型转换与IO库
  • 海口中小企业网站制作3D特效做首页的网站
  • 专业做家政网站( )是网站可以提供给用户的价值
  • 网站活动专题页面学校网站建设制作方案
  • 【C++】从理论到实践:类和对象完全指南(上)
  • 网站不排名一切等于零做网站推广维护需要学些什么
  • 公考面试资源合集
  • 网站建设 预付款自己怎么做软件
  • 41、C#什么是单例设计模式
  • kafka单机版安装
  • 网站开发要求有哪些大沥南庄网站建设
  • 我在高职教STM32(新12)——STM32中断概览
  • OceanBase 内存数据转储、合并说明
  • 网站开发设计制作公司微信软文案例
  • 下载安装pycharm 并通过pycahrm来驱动Anaconda来运行Python程序
  • dw网站建设讨论总结wordpress的程序文件
  • Kratos微服务框架下实现CQRS架构模式
  • openGauss实战:Python开发与AI向量数据库应用
  • 第43节:集群渲染:分治策略处理超大规模场景
  • php的数组和python的列表 -- 横向对比学习
  • 队列传输的函数应用原理(拷贝原理)