解读Triple、ImmutableTriple、MutableTriple的源码

2023-11-09 14:41

本文主要是介绍解读Triple、ImmutableTriple、MutableTriple的源码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Triple介绍
  • 三者之间的关系
  • ImmutableTriple
  • MutableTriple

Triple介绍

  • 包路径为:org.apache.commons.lang3.tuple
  • Triple是一个抽象类,它实现了Comparable、Serializable接口。
  • 它的内部还有一个类TripleAdapter,是它的子类。
    在这里插入图片描述
  • Triple是用于存储三个对象的。
  • 三个对象的位置是left、middle、right。因此Triple带泛型是Triple< L ,M ,R>。
  • Triple类内部还有一个不可变的空数组,是用TripleAdapter new 出来的。
    在这里插入图片描述
  • Triple类内部提供了一个emptyArray方法。
    在这里插入图片描述
  • Triple类提供了一个of()方法用于构建ImmutableTriple类的实例。ImmutableTriple类是Triple类的子类。
    在这里插入图片描述
  • Triple类重写了compareTo(),equals(),hashCode(),toString()。还提供了三个方法用于获取三个对象。
    在这里插入图片描述
  • Triple类内部还提供了一个重载的toString()方法,它的作用是把三个对象的值替换字符串中指定的值。
    在这里插入图片描述

三者之间的关系

在这里插入图片描述

  • ImmutableTriple ,MutableTriple,TripleAdapter都是Triple类的子类。
  • ImmutableTriple 与MutableTriple的区别在于前者有final修饰类,后者没有。

ImmutableTriple

public final class ImmutableTriple<L, M, R> extends Triple<L, M, R> {//创建一个空数组public static final ImmutableTriple<?, ?, ?>[] EMPTY_ARRAY = new ImmutableTriple[0];//调用of方法创建一个空实例private static final ImmutableTriple NULL = of(null, null, null);//Serialization versionprivate static final long serialVersionUID = 1L;//将空数组强转并返回public static <L, M, R> ImmutableTriple<L, M, R>[] emptyArray() {return (ImmutableTriple<L, M, R>[]) EMPTY_ARRAY;}//返回空实例public static <L, M, R> ImmutableTriple<L, M, R> nullTriple() {return NULL;}//构建一个ImmutableTriple实例public static <L, M, R> ImmutableTriple<L, M, R> of(final L left, final M middle, final R right) {return new ImmutableTriple<>(left, middle, right);}//三个对象public final L left;public final M middle;public final R right;//全参构造器public ImmutableTriple(final L left, final M middle, final R right) {super();this.left = left;this.middle = middle;this.right = right;}//三个get方法@Overridepublic L getLeft() {return left;}@Overridepublic M getMiddle() {return middle;}@Overridepublic R getRight() {return right;}
}

MutableTriple

public class MutableTriple<L, M, R> extends Triple<L, M, R> {//空数组的属性public static final MutableTriple<?, ?, ?>[] EMPTY_ARRAY = new MutableTriple[0];//Serialization versionprivate static final long serialVersionUID = 1L;//强转返回空数组public static <L, M, R> MutableTriple<L, M, R>[] emptyArray() {return (MutableTriple<L, M, R>[]) EMPTY_ARRAY;}//of方法构建实例public static <L, M, R> MutableTriple<L, M, R> of(final L left, final M middle, final R right) {return new MutableTriple<>(left, middle, right);}//三个属性public L left;public M middle;public R right;//无参构造器public MutableTriple() {super();}//全参构造器public MutableTriple(final L left, final M middle, final R right) {super();this.left = left;this.middle = middle;this.right = right;}//对应的get、set方法@Overridepublic L getLeft() {return left;}@Overridepublic M getMiddle() {return middle;}@Overridepublic R getRight() {return right;}public void setLeft(final L left) {this.left = left;}public void setMiddle(final M middle) {this.middle = middle;}public void setRight(final R right) {this.right = right;}
}

这篇关于解读Triple、ImmutableTriple、MutableTriple的源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/376752

相关文章

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步