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

com.mmnaseri.utils.tuples.facade.HasTenth 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 tenth element of a {@link FixedTuple}.
 *
 * @param  the super-type of the tuple's main data type.
 * @param  the type of the object at the tenth position.
 * @param  the concrete type of the fixed-size tuple.
 * @author Milad Naseri ([email protected])
 */
public interface HasTenth> extends FixedTuple {

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

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

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

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

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

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy