Wann sind static-Klassen (Klassen von denen kein Objekt erzeugt wird) sinnvoll?

Der Einsatz von static-Klassen ist sinnvoll für Sammlungen von Methoden, die keinen Zustand haben. Die Methoden bekommen Daten übergeben, verarbeiten diese und geben das Resultat zurück. Es besteht eine Ähnlichkeit zu Funktionen in der Mathematik.

In der Klassenbibliothek von Java ist die Klasse java.lang.Math ein Musterbeispiel für eine statische Klasse. Diese Klasse implementiert verschiedene mathematische Funktionen (sin(), cos(), log(), …), die keine gemeinsamen Zustände haben.

Die im folgenden Beispiel vorgestellte Klasse ArrayUtils zeigt die Umsetzung einer statischen Klasse mit Hilfsmethoden für Arrays. Auch diese Methoden haben keine gemeinsamen Zustände. Die statischen Methoden der Klasse ArrayUtils bekommen ein Array übergeben, verarbeiten die Werte des Arrays und geben ein Ergebnis zurück.

public class ArrayUtils {

    private ArrayUtils() {
    }

    public static double sum(double[] a) {
        double result = 0.0;
        for (double ai : a) {
            result += ai;
        }
        return result;
    }

    public static double average(double[] a) {
        return sum(a) / a.length;
    }
}

// Verwendung:
double[] a = {1.2, 3.4, 5.6};
double avg = ArrayUtils.average(a);

Um zu erzwingen, dass eine Klasse nur in einem statischen Kontext verwendet wird, kann ein privater Konstruktor implementiert (Zeile 3) werden. Damit wird verhindert, dass Instanzen der Klasse mittels new erzeugt werden können.