Dienstprogrammklassen (Klassen, die aus statischen Methoden und statischen Feldern bestehen) sind nicht für die Instanziierung vorgesehen. Trotzdem sehe ich oft Dinge, die instanziiert werden können. Verwenden wir also einen privaten Konstruktor, um eine Instanziierung absolut unmöglich zu machen.
Wenn Sie keine Konstruktoren definiert haben, wird automatisch ein Konstruktor namens Standardkonstruktor erstellt.
Durch das explizite Schreiben eines privaten Konstruktors wird der Zugriff von außen deaktiviert und die Generierung des Standardkonstruktors unterdrückt. AssertionError ist nicht unbedingt erforderlich, aber als Versicherung enthalten.
//Dienstprogrammklassen, die nicht instanziiert werden können
public class UtilityClass {
//Unterdrücken Sie den Standardkonstruktor, um eine Instanziierung zu verhindern
private UtilityClass() {
throw new AssertionError();
}
… //Der Rest entfällt
}
[Read Effective Java] Kapitel 2 Punkt 5 "Vermeiden Sie die Erstellung unnötiger Objekte" https://qiita.com/Natsukii/items/ec64efddce85ffd59fa8
Recommended Posts