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

【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式

文章目录

    • 前言
    • 1. 泛型参数和自定义迭代器
      • 1.1 使用场景
      • 1.2 实现
    • 2. 值得一提

前言

  • 官方文档
    Hamcrest Tutorial

  • 上篇文章
    Hamcrest 源码阅读及空对象模式、模板方法模式的应用

  • 本篇文章

    • 迭代器模式

1. 泛型参数和自定义迭代器

hamcrest 作为一个matcher库,把某个matcher的职责打印出来,可以方便开发者进行调试。

1.1 使用场景

在这里插入图片描述
这里表示实例化一个 IsIn 的 Matcher,规则是需要满足在 a, b, c 中任意的一个值。
打印逻辑就在 StringDescription.toString() 中,这个方法在上篇文章中有提到。
使用jdk的迭代器可以保证打印方法的复用性,下文就读读框架中的实现。

1.2 实现

关注到这个泛型参数,? extends SelfDescribing 表示必须是来自于 SelfDescribing 子类的迭代器。
在这里插入图片描述

自定义迭代器
在这里插入图片描述
声明该参数的作用:appendDescription方法只接收 SelfDescribing,而appendList方法需要对存储 SelfDescribing 的容器进行遍历,所以需要约束容器内的成员类型
在这里插入图片描述

2. 值得一提

  • “跳过第一个元素” 的一种写法
        boolean separate = false;append(start);while (i.hasNext()) {// 第一个字符前不拼接连接符, 其他都拼接if (separate) {append(separator);}// 打印字符appendDescriptionOf(i.next());separate = true;}append(end);
http://www.lryc.cn/news/189207.html

相关文章:

  • IntelliJ IDEA 2023.1 版本可以安装了
  • 安全论坛和外包平台汇总
  • 9-2-Dataset创建-import调用
  • XSS原理
  • 记一个带批注、表头样式的导入导出excel方法(基于easyexcel)
  • 二叉搜索树--新增节点-力扣 701 题
  • C++ - 智能指针 - auto_ptr - unique_ptr - std::shared_ptr - weak_ptr
  • 【快速入门】JVM之类加载机制与Native
  • R实现数据分布特征的视觉化——多笔数据之间的比较
  • TCPUDP
  • 设计模式 - 备忘录模式
  • OpenCV4(C++)—— 几何图形的绘制
  • 智能优化算法常用指标一键导出为EXCEL,CEC2017函数集最优值,平均值,标准差,最差值,中位数,秩和检验,箱线图...
  • python文件打包方式汇总
  • 基于ChatGPT+词向量/词嵌入实现相似商品推荐系统
  • 虾皮商品链接获取虾皮商品详情数据(用 Python实现虾皮商品信息抓取)
  • 【数据库系统概论】数据查询之单表查询。详细解释WHERE、OEDER BY、GROUP BY 和 HAVING
  • 2023年医药商业行业发展研究报告
  • Android 消息机制
  • QT计时器QTime的使用举例
  • js中await用法
  • Qt多工程同名字段自动翻译工具
  • vue3+elementui实现表格样式可配置
  • x11截屏源码(ubuntu18.04)
  • 【ComfyUI】MacBook Pro 安装(Intel 集成显卡)
  • HTTPS 加密全过程
  • 联邦学习综述二
  • Idea本地跑flink任务时,总是重复消费kafka的数据(kafka->mysql)
  • 基于nodemailer实现邮件发送
  • 【PostgreSQL内核学习(十八)—— (数据库表参数)】