Welche Modifikatoren fügen Sie in die StaticUtility-Klasse ein? Ich trug ohne Zweifel das Finale. Der aktuelle Quellcode ist abstrakt ohne endgültig, daher werde ich die Details und Erklärungen als Memorandum belassen.
Fügen Sie im vorherigen Projekt beim Erstellen der StaticUtility-Klasse den endgültigen Modifikator hinzu. Ich habe einen privaten Konstruktor erstellt, damit er nicht instanziiert wird. (Jedes Mal, wenn ich denke, dass es nervt)
//Fügen Sie den Klassenmodifikatoren final hinzu, um eine Vererbung zu verhindern
public final class A {
//Erstellen Sie ein privates Konstrukt, damit es nicht instanziiert wird
private A(){
}
public static String getHello() {
return "Hello";
}
}
Ich habe es beim Lesen der Spring Framework-Klassen entdeckt, aber in letzter Zeit starke Leute Es schien, als würde ich ein statisches Dienstprogramm mit Zusammenfassung erstellen. Spring Source
//Ich habe es abstrakt gemacht und den Konstruktor nicht geschrieben
public abstract class FreeMarkerTemplateUtils {
public static String processTemplateIntoString(Template template, Object model)
throws IOException, TemplateException {
StringWriter result = new StringWriter();
template.process(model, result);
return result.toString();
}
}
Instanzen können nicht für abstrakte Klassen erstellt werden. Sie müssen also keinen privaten Konstruktor definieren Da Sie sich keine Gedanken über das Erstellen einer Instanz machen müssen, wird der Codierungsaufwand wahrscheinlich reduziert.
Wird es nicht vererbt, wenn es abstarakt ist? Ich dachte, aber ich kann es nicht überschreiben, wenn es geerbt wird, Vor allem angesichts der Zeit und des Aufwands des privaten Konstrukteurs fand ich Abstarct überwiegend vorteilhafter. (Erstens gibt es Zeiten, in denen ich vergesse, einen privaten Konstruktor zu schreiben, also verhindert das auch!)
Lassen Sie uns den Quellcode von immer stärkeren Menschen imitieren!
Recommended Posts