Triple
This commit is contained in:
parent
17c21a0918
commit
31f3964cb9
85
src/com/massivecraft/mcore/Triple.java
Normal file
85
src/com/massivecraft/mcore/Triple.java
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
package com.massivecraft.mcore;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.massivecraft.mcore.util.MUtil;
|
||||||
|
|
||||||
|
public class Triple<A, B, C> 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<A, B, C> withFirst(A first) { return valueOf(first, second, third); }
|
||||||
|
|
||||||
|
public Triple<A, B, C> 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 <A, B, C> Triple<A, B, C> valueOf(A first, B second, C third)
|
||||||
|
{
|
||||||
|
return new Triple<A, B, C>(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<A, B, C> clone()
|
||||||
|
{
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user