Class Tuple3<A,​B,​C>

  • Type Parameters:
    A - The type of the first member-field ('a').
    B - The type of the second member-field ('b').
    C - The type of the third member-field ('c').
    All Implemented Interfaces:, java.lang.Cloneable

    public class Tuple3<A,​B,​C>
    extends TupleN
    implements, java.lang.Cloneable
    This simple generic-class allows for storing three objects with a single reference.

    Modifiable, Read-Write
    Classes which inherit Ancestor-Class TupleN will always contains fields which are not declared using the 'final' modifier. These classes are, therefore, "Mutable Tuples" - meaning their contents may be changed whenever necessary.

    Remember: The classes Ret3 and Tuple3 completely identical, with the sole difference being that Ret3 fields are all declared final, but the Tuple3 fields are not!
    See Also:
    Serialized Form

    • Field Summary

      Serializable ID
      Modifier and Type Field
      protected static long serialVersionUID
      Instance Fields
      Modifier and Type Field
      A a
      B b
      C c
    • Constructor Summary

      Constructor Description
      Constructs this object.
      Tuple3​(A a, B b, C c)
      Constructs this object
    • Method Summary

      Retrieve the Number of Fields in this Class
      Modifier and Type Method
      int n()
      Retrieve a Field by Field-Number
      Modifier and Type Method
      Object get​(int i)
      Convert this instance to an Immutable RetN instance, of the same size
      Modifier and Type Method
      Ret3<A,​B,​C> toImmutable()
      Methods: interface java.lang.Cloneable
      Modifier and Type Method
      Tuple3<A,​B,​C> clone()
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • serialVersionUID

        🡇     🗕  🗗  🗖
        protected static final long serialVersionUID
        This fulfils the SerialVersion UID requirement for all classes that implement Java's interface Using the Serializable Implementation 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
        Exact Field Declaration Expression:
         protected static final long serialVersionUID = 1;
    • Method Detail

      • n

        🡅  🡇     🗕  🗗  🗖
        public int n()
        Returns '3', indicating how many fields are declared by this class.
        Specified by:
        n in class MultiType
        As an instance of Tuple3, this method returns '3';
        Exact Method Body:
         return 3;
      • clone

        🡅  🡇     🗕  🗗  🗖
        public Tuple3<A,​B,​Cclone()
        Description copied from class: MultiType
        Clones the contents of 'this' instance of.
        Specified by:
        clone in class MultiType
        A clone copy of 'this' object.
        Exact Method Body:
         return new Tuple3<>(this.a, this.b, this.c);
      • get

        🡅  🡇     🗕  🗗  🗖
        public java.lang.Object get​(int i)
        This method will retreive the ith field of this instance. This can be useful when you wish to use the Ancestor / Parent classses: TupleN or MultiType for handling 'this' instance.

        As a reminder, the fields inside this class have all been declared public! Referencing this instance' fields, directly, will always work in place of calling any of the get(...) methods.

        Type Casting:
        This method can make for easier typing. When using either of the super-classes of this class - namely TupleN or MultiType - you simply do not have to type (into your computer's keyboard) all of the Field Generic Types (the stuff between the '<' and '>' less-than & greater-than symbols).

        However, anytime one of these ancestor classes are used instead of the actual Tuple3 instance, you will have to use one of the provided 'get' methods to retrieve a field inside the Tuple3 instance. This is because the parent-ancestor classes do not actually have any fields to retrieve.

        There are three 'get' methods provided in Root-Ancestor Class MultiType. 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!

        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // 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: Tuple3.
        Tuple3<String, Integer, Date> ref3 = some_function_returns_3();
        String neededStrField = ref3.a;
        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // Less Keyboard-Typing (Less Eyesores), but Requires a Cast
        // *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
        // If the Tuple3 super-class TupleN is used to reference this class data,
        TupleN refN = some_function_returns3();
        // Version #1: (this method) - simple 'get'
        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 Tuple3.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:
        get in class MultiType
        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 an IndexOutOfBoundsException throw.
        This returns the ith field of this class.
        See Also:
        MultiType.get(int, Class), MultiType.GET(int)
        Exact Method Body:
         // Throws Exception if i not in [1..3]
         return (i <= 2)
             ? ((i == 1) ? a : b)
             : c;
      • toImmutable

        🡅     🗕  🗗  🗖
        public Ret3<A,​B,​CtoImmutable()
        Description copied from class: TupleN
        Converts 'this' Modifiable TupleN instance into a Read-Only RetN.
        Specified by:
        toImmutable in class TupleN
        A RetN of 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.
        Exact Method Body:
         return new Ret3<>(this.a, this.b, this.c);