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

xdean.jex.util.function.FunctionAdapter Maven / Gradle / Ivy

The newest version!
package xdean.jex.util.function;

import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;

import xdean.codecov.CodecovIgnore;
import xdean.jex.extra.collection.Wrapper;
import xdean.jex.extra.function.ActionE0;
import xdean.jex.extra.function.ActionE1;
import xdean.jex.extra.function.FuncE0;

@CodecovIgnore
public class FunctionAdapter {

  public static  Supplier supplier(T t) {
    return () -> t;
  }

  public static  UnaryOperator function(Consumer c) {
    return t -> {
      c.accept(t);
      return t;
    };
  }

  public static  Consumer consumer(Runnable r) {
    return t -> r.run();
  }

  public static  BiConsumer consumeFirst(Consumer c) {
    return (a, b) -> c.accept(a);
  }

  public static  BiConsumer consumeSecond(Consumer c) {
    return (a, b) -> c.accept(b);
  }

  public static  BiFunction functionFirst(BiConsumer bc) {
    return (a, b) -> {
      bc.accept(a, b);
      return a;
    };
  }

  public static  BiFunction functionSecond(BiConsumer bc) {
    return (a, b) -> {
      bc.accept(a, b);
      return b;
    };
  }

  /**
   * @param s
   * @param c
   * @return the supplier's product
   */
  public static  T supplierToRunnable(Supplier s, Consumer c) {
    Wrapper w = new Wrapper<>(null);
    c.accept(() -> w.set(s.get()));
    return w.get();
  }

  public static  T
      supplierToRunnable(FuncE0 s, ActionE1, EE> c) throws EE {
    Wrapper w = new Wrapper<>(null);
    c.call(() -> w.set(s.call()));
    return w.get();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy