All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mmnaseri.utils.tuples.facade.HasFifth Maven / Gradle / Ivy

There is a newer version: 1.1.2
Show newest version
package com.mmnaseri.utils.tuples.facade;

import com.mmnaseri.utils.tuples.FixedTuple;
import com.mmnaseri.utils.tuples.Tuple;

import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;

/**
 * Defines methods that work with the fifth element of a {@link FixedTuple}.
 *
 * @param  the super-type of the tuple's main data type.
 * @param  the type of the object at the fifth position.
 * @param  the concrete type of the fixed-size tuple.
 * @author Milad Naseri ([email protected])
 */
public interface HasFifth> extends FixedTuple {

  /** Returns the fifth element in the current tuple. */
  @SuppressWarnings("unchecked")
  default A fifth() {
    return (A) get(4);
  }

  /** Sets the fifth element of the tuple to the indicated value. */
   Tuple fifth(X value);

  /** Sets the fifth element of the tuple to the supplied value. */
   Tuple fifth(Supplier supplier);

  /** Sets the fifth element of the tuple to the value returned from the function. */
   Tuple fifth(Function function);

  /** Drops the fifth element of the tuple, to return a tuple of one size smaller. */
  Tuple dropFifth();

  /** Checks to see if the fifth element of this tuple matches the given predicate. */
  default boolean checkFifth(Predicate predicate) {
    return predicate.test(fifth());
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy