Package Torello.Java.Additional
Class Tuple2<A,B>
- java.lang.Object
-
- Torello.Java.Additional.MultiType
-
- Torello.Java.Additional.TupleN
-
- Torello.Java.Additional.Tuple2<A,B>
-
- Type Parameters:
A- The type of the first member-field ('a').B- The type of the second member-field ('b').
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable
public class Tuple2<A,B> extends TupleN implements java.io.Serializable, java.lang.Cloneable
This simple generic-class allows for storing two objects with a single reference.Modifiable, Read-Write: Classes which inherit Ancestor-ClassTupleNwill always contains fields which have been declared without the use of the'final'modifier. These classes are, therefore, "Mutable Tuples" - meaning their contents may be changed whenever necessary.Remember: The classesRet2andTuple2completely identical, with the sole difference being thatRet2fields are all declared'final', but theTuple2fields are not!- See Also:
- Serialized Form
Hi-Lited Source-Code:- View Here: Torello/Java/Additional/Tuple2.java
- Open New Browser-Tab: Torello/Java/Additional/Tuple2.java
File Size: 2,099 Bytes Line Count: 72 '\n' Characters Found
-
-
Field Summary
Serializable ID Modifier and Type Field protected static longserialVersionUIDInstance Fields Modifier and Type Field AaBb
-
Method Summary
Retrieve the Number of Fields in this Class Modifier and Type Method intn()Retrieve a Field by Field-Number Modifier and Type Method Objectget(int i)Convert this instance to an Immutable RetN instance, of the same size Modifier and Type Method Ret2<A,B>toImmutable()Methods: interface java.lang.Cloneable Modifier and Type Method Tuple2<A,B>clone()
-
-
-
Field Detail
-
serialVersionUID
protected static final long serialVersionUID
This fulfils the SerialVersion UID requirement for all classes that implement Java'sinterface java.io.Serializable. Using theSerializableImplementation offered by java is very easy, and can make saving program state when debugging a lot easier. It can also be used in place of more complicated systems like "hibernate" to store data as well.- See Also:
- Constant Field Values
- Code:
- Exact Field Declaration Expression:
protected static final long serialVersionUID = 1;
-
a
-
b
-
-
Constructor Detail
-
Tuple2
-
Tuple2
public Tuple2()
Constructs this object. Initializes both fields to null.
-
-
Method Detail
-
n
-
clone
-
get
public java.lang.Object get(int i)
This method will retreive theithfield of this instance. This can be useful when you wish to use the Ancestor / Parent classses:TupleNorMultiTypefor handling'this'instance.
As a reminder, the fields inside this class have all been declaredpublic! Referencing this instance' fields, directly, will always work in place of calling any of theget(...)methods.
Type Casting:
This method can make for easier typing. When using either of the super-classes of this class - namelyTupleNorMultiType- you simply do not have to type (into your computer's keyboard) all of the FieldGeneric Types(the stuff between the'<'and'>'less-than & greater-than symbols).
However, anytime one of these ancestor classes are used instead of the actualTuple2instance, you will have to use one of the provided'get'methods to retrieve a field inside theTuple2instance. This is because the parent-ancestor classes do not actually have any fields to retrieve.
There are three'get'methods provided in Root-Ancestor ClassMultiType. Each of these three 'getters' allows for casting (this) sub-class' returned fields in a slightly different way. When you aren't referencing the actual instance, itself, but rather one of the two Parent-Tuple Classes, you must use one of their getters, and you will have to cast the fields that you wish to use, eventually!
Example:
// *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** // No Cast Necessary // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** // This line makes for longer typing, but DOES NOT REQUIRE A CAST TO RETRIEVE FIELDS. // Here the example Multi-Type Identifier is used: Tuple2. Tuple2<String, Integer> ref2 = some_function_returns_2(); String neededStrField = ref2.a; // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** // Less Keyboard-Typing (Less Eyesores), but Requires a Cast // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** // If the Tuple2 super-class TupleN is used to reference this class data, // YOU WILL NEED TO CAST THE FIELDS BEFORE YOU CAN THEM, AS IN THE EXAMPLES BELOW: TupleN refN = some_function_returns2(); // Version #1: (this method) - simple 'get' @SuppressWarnings("unchecked") String neededStrField = (String) refN.get(1); // Version #1: The second Method-Parameter is a 'Class<T>' Type-Parameter // Note, again, that passing a '1' to the first parameter retrieves Tuple2.a String neededStrField = refN.get(1, String.class); // Version #3: "GET" (in all caps) utilizes Java "Type-Inferencing" - the Return-Type // is specified by the left side of the assignments statement. String needesStrField = refN.GET(1);
- Specified by:
getin classMultiType- Parameters:
i- This specifies which field of the instance is being requested.Important: Unlike a Java array, when a'1'is passed to this parameter, it is requesting the first field in this instance. Passing a value of'0'shall cause anIndexOutOfBoundsExceptionthrow.- Returns:
- This returns the
ithfield of this class. - See Also:
MultiType.get(int, Class),MultiType.GET(int)- Code:
- Exact Method Body:
// Throws Exception if i not 1 or 2 CHECK_GET(i); return (i == 1) ? a : b;
-
toImmutable
public Ret2<A,B> toImmutable()
Description copied from class:TupleN- Specified by:
toImmutablein classTupleN- Returns:
- A
RetNof the same size, which is an immutable type whose fields have been decorated with the'final'modifier - and therefore cannot be changed once the instance has been constructed. - Code:
- Exact Method Body:
return new Ret2<>(this.a, this.b);
-
-