Heim  >  Artikel  >  Java  >  Beispiele für Aufzählungs-Singleton-Muster und Quellcode-Analyse in Java

Beispiele für Aufzählungs-Singleton-Muster und Quellcode-Analyse in Java

黄舟
黄舟Original
2017-08-08 09:57:041513Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen zum JAVA-Aufzählungs-Singleton-Modus und zu Beispielen für die Quellcode-Analyse vorgestellt. Freunde, die sie benötigen, können sich auf

Detaillierte Erläuterungen zu Beispielen für den JAVA-Aufzählungs-Singleton-Modus und die Quellcode-Analyse beziehen 🎜>

Es gibt viele Möglichkeiten, den Singleton-Modus zu implementieren. Es wurde auch online analysiert, dass es am besten ist, den Single-Interest-Modus zu implementieren. Die Vorteile sind nur drei Punkte:

1. Thread-Sicherheit

2. Aufgrund der Serialisierung werden keine neuen Instanzen generiert

3. Reflection-Angriffe verhindern Es scheint jedoch keinen Artikel zu geben, der erklärt, wie der ENUM-Singleton funktioniert Bitte erklären Sie es den Experten. Schauen wir uns diese drei Punkte an:


Was den ersten Punkt der Thread-Sicherheit betrifft, ist dies auch aus dem dekompilierten Klassenquellcode ersichtlich garantiert durch den Klassenlademechanismus.

Über das zweite Serialisierungsproblem gibt es einen Artikel, der besagt, dass die Aufzählungsklasse die readResolve()-Methode selbst implementiert, also resistent gegen Serialisierung ist . Diese Methode wird von der aktuellen Klasse selbst implementiert (Lösung)

Zum zweiten Punkt: Dreipunkt-Reflexionsangriff Ich habe selbst den folgenden Reflexionsangriff versucht, aber es wurde ein Fehler gemeldet ... Nach dem Lesen der dekompilierten Klasse Im folgenden Quellcode verstehe ich, dass die Änderung der Singleton-Klasse nicht instanziiert werden kann, da sie abstrakt ist. (Lösung)

Das Folgende ist ein Enumerations-Singleton, den ich geschrieben habe, und die dekompilierte Klasse seiner Klassendatei

Enumerations-Singleton


public enum Singleton {
  INSTANCE {

    @Override
    protected void read() {
      System.out.println("read");
    }

    @Override
    protected void write() {
      System.out.println("write");
    }

  };
  protected abstract void read();
  protected abstract void write();
}
Klassen nach der Dekompilierung wiederhergestellt


Das obige ist der detaillierte Inhalt vonBeispiele für Aufzählungs-Singleton-Muster und Quellcode-Analyse in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn