From 31f3964cb947387249f20fc6cbc94086f1e7cb81 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Thu, 3 Oct 2013 16:06:43 +0200 Subject: [PATCH] Triple --- src/com/massivecraft/mcore/Triple.java | 85 ++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/com/massivecraft/mcore/Triple.java diff --git a/src/com/massivecraft/mcore/Triple.java b/src/com/massivecraft/mcore/Triple.java new file mode 100644 index 00000000..8d8d38ef --- /dev/null +++ b/src/com/massivecraft/mcore/Triple.java @@ -0,0 +1,85 @@ +package com.massivecraft.mcore; + +import java.io.Serializable; + +import com.massivecraft.mcore.util.MUtil; + +public class Triple implements Cloneable, Serializable +{ + // -------------------------------------------- // + // CONSTANTS + // -------------------------------------------- // + + private static final transient long serialVersionUID = 1L; + + // -------------------------------------------- // + // FIELDS: RAW + // -------------------------------------------- // + + private final A first; + public A getFirst() { return this.first; }; + + private final B second; + public B getSecond() { return this.second; }; + + private final C third; + public C getThird() { return this.third; }; + + // -------------------------------------------- // + // FIELDS: WITH + // -------------------------------------------- // + + public Triple withFirst(A first) { return valueOf(first, second, third); } + + public Triple withSecond(B second) { return valueOf(first, second, third); } + + // -------------------------------------------- // + // CONSTRUCT + // -------------------------------------------- // + + public Triple() + { + this(null, null, null); + } + + public Triple(A first, B second, C third) + { + this.first = first; + this.second = second; + this.third = third; + } + + // -------------------------------------------- // + // FACTORY: VALUE OF + // -------------------------------------------- // + + public static Triple valueOf(A first, B second, C third) + { + return new Triple(first, second, third); + } + + // -------------------------------------------- // + // EQUALS + // -------------------------------------------- // + + @Override + public boolean equals(Object derpObject) + { + if (derpObject == null) return false; + if (!(derpObject instanceof Triple)) return false; + Triple derp = (Triple)derpObject; + return MUtil.equals(this.getFirst(), derp.getFirst()) && MUtil.equals(this.getSecond(), derp.getSecond()) && MUtil.equals(this.getThird(), derp.getThird()); + } + + // -------------------------------------------- // + // CLONE + // -------------------------------------------- // + + @Override + public Triple clone() + { + return this; + } + + +}