adam bien's blog

Replacing Utility Classes With Interfaces And Java 8 📎

Utility classes act a a bag of related static methods with a private constructor:


package java.lang;

public final class Math {

    /**
     * Don't let anyone instantiate this class.
     */
    private Math() {}

    public static double sin(double a) { /**/}

Java 8 introduces a leaner alternative -- the "utility interface" and makes the private anti-constructor superfluous:


public interface Math {
    public static double sin(double a) { /**/}
}

See e.g. Contexts.java from the nano project.

See you at Java EE Workshops at Munich Airport, Terminal 2 or Virtual Dedicated Workshops / consulting. Is Munich's airport too far? Learn from home: airhacks.io.