Assert#notNull vs. Objects#requireNonNull

Ich habe gerade per Zufall gesehen, dass es seit Java 7 die Klasse [japi]Objects[/japi] gibt, die die Methode requireNonNull enthält.

Aufgrund der Zielsetzung neco4j möglichst schlank zu halten, finde ich es sinnvoll, Objects#requireNonNull anstelle von Assert#notNull zu benutzen.

Der Unterschied ist, dass bei Objects#requireNonNull eine NPE statt eine IllegalArgumentException geworfen wird. Das ist mMn auch die richtige Exception (zumindest werfe ich sie bei Nonnull-Argumenten in anderen Projekten auch immer):

Zum Vergleich noch einmal Assert#notNull:

    if (o == null) {
        throw new IllegalArgumentException(message);
    }
}

public static void notNull(Object o) {
    notNull(o, "null value not allowed");
}```

Ja, ich finde auch, dass wir Objects#requireNonNull nehmen sollten.

Aber bevor du die Klasse rausschmeißt: Gibt es vielleicht andere nützliche Assertions, die in Objects fehlen?

Ansonsten verwende ich gern Bereichsassertions für Ganzzahlen (isPositive, isBetween, …). Das brauchen wir denke ich mal aber nicht.

Derzeit fällt mir keine Verwendung für die Klasse ein. Wenn euch nicht noch etwas einfällt, dann schmeiße ich die Klasse heute Abend raus.

Eventuell eine Bereichsprüfung für Indizes (später für Listen)? Ist aber schon recht speziell.

Ansonsten fällt mir auch nichts ein.