本文主要是介绍解读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的源码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!