Package io.blt.util

Class Obj

java.lang.Object
io.blt.util.Obj

public final class Obj extends Object
Static utility methods for operating on Object.
  • Method Details

    • poke

      public static <T, E extends Throwable> T poke(T instance, ThrowingConsumer<T,E> consumer) throws E
      Passes the instance to the consumer, then returns the instance. e.g.
      
       var user = Obj.poke(new User(), u -> {
           u.setName("Greg");
           u.setAge(15);
       });
       

      Optionally, the consumer may throw which will bubble up.

      Type Parameters:
      T - type of instance
      E - type of consumer throwable
      Parameters:
      instance - instance to consume and return
      consumer - operation to perform on instance
      Returns:
      instance after accepting side effects via consumer.
      Throws:
      E extends Throwable
    • tap

      public static <T, E extends Throwable> T tap(Supplier<T> supplier, ThrowingConsumer<T,E> consumer) throws E
      Calls the supplier to retrieve an instance which is mutated by the consumer then returned. e.g.
      
       var user = Obj.tap(User::new, u -> {
           u.setName("Greg");
           u.setAge(15);
       });
       

      Optionally, the consumer may throw which will bubble up.

      Type Parameters:
      T - type of instance
      E - type of consumer throwable
      Parameters:
      supplier - supplies an instance to consume and return
      consumer - operation to perform on supplied instance
      Returns:
      Supplied instance after applying side effects via consumer.
      Throws:
      E extends Throwable
    • orElseGet

      public static <T, E extends Throwable> T orElseGet(T value, ThrowingSupplier<T,E> supplier) throws E
      Returns value if non-null, else invokes and returns the result of supplier.

      Optionally, the supplier may throw which will bubble up.

      e.g.
      
       private URL homepageOrDefault(URL homepage) throws MalformedURLException {
           return orElseGet(homepage, () -> new URL("https://google.com"));
       }
       
      Type Parameters:
      T - type of the returned value
      E - type of supplier throwable
      Parameters:
      value - returned if non-null
      supplier - called and returned if value is null
      Returns:
      value if non-null, the result of supplier
      Throws:
      E - Throwable that may be thrown if the supplier is invoked