Interface SupplierExt<T,​E extends java.lang.Throwable>

  • Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @PrimaryRequirement(updates=java.util.function.Supplier.class)
    @FunctionalInterface
    public interface SupplierExt<T,​E extends java.lang.Throwable>

    Changes for Supplier

    Why:
    1. If a Supplier lambda throws a checked exceptions, the developer has to messily wrap it in a RuntimeException.
    2. If Supplier.get throws a RuntimeException, the compiler will not warn the developer.
    3. This class provides type-safe exceptions which is not currently possible with java.util.function classes.

    To eliminate the need for this class:
    1. Java should support default values for generic parameters.
    2. Modify java.util.function.Supplier<T> to Supplier<T, E extends Throwable = Throwable>

    Risk:
    1. Maintains source compatibility because the E parameter can be omitted.
    2. Maintains binary compatibility because generic types are erased.
    3. Impact on code using Reflection APIs should be minimal.

    • Method Summary

      Modifier and Type Method Description
      T get()  
    • Method Detail

      • get

        @Update
        T get()
        throws E extends java.lang.Throwable
        Throws:
        E extends java.lang.Throwable