Heim > Java > javaLernprogramm > Löschen

Löschen

Linda Hamilton
Freigeben: 2024-12-30 15:15:10
Original
663 Leute haben es durchsucht

Erasure (Apagamento de Tipos)

Was ist Löschung?
- Erasure ist die von Java verwendete Technik zur Implementierung von Generika, die die Abwärtskompatibilität mit früheren Versionen der Sprache gewährleistet.

  • Während der Kompilierung werden alle generischen Typinformationen *entfernt *(oder „gelöscht“).

2. Motivation für die Verwendung von Erasure
Kompatibilität mit Legacy-Codes:

  • Die Einführung von Generika in Java (JDK 5) sollte älteren Code nicht ungültig machen.
  • Das Design von Generika musste sicherstellen, dass sowohl generischer als auch nicht generischer Code reibungslos zusammenarbeiten.

Angemessene Zwänge:

  • Der Compiler fügt Zwänge hinzu, um die Typkompatibilität mit den angegebenen Argumenten sicherzustellen.
  • Informationen aus generischen Typen entfernen:
  • Typparameter existieren nur im Quellcode, nicht jedoch zur Laufzeit.

4. Beispiel für Löschung in Aktion

  • Generischer Code:
class Gen<T> {
    T ob;

    Gen(T o) {
        ob = o;
    }

    T getOb() {
        return ob;
    }
}

Nach dem Login kopieren
  • Code nach dem Löschen (wie der Compiler ihn umwandelt):
class Gen {
    Object ob;

    Gen(Object o) {
        ob = o;
    }

    Object getOb() {
        return ob;
    }
}

Nach dem Login kopieren

Hinweise:

  • Der Typparameter wird durch Object ersetzt.
  • Im generierten Code sind keine allgemeinen Informationen verfügbar.

5. Einschränkungen der Löschung
Fehlende Typinformationen zur Laufzeit:

  • Generische Typen sind ein Quellcodemechanismus und existieren nach der Kompilierung nicht.

Nicht möglich:

  • Erhalten Sie den generischen Typ einer Instanz zur Laufzeit.
  • Das direkte Erstellen von Instanzen generischer Typen (z. B. new T() ist nicht zulässig).

6. Praktische Auswirkungen

Löschung erklärt:

  • Warum Generika keine Überladung haben: Methoden mit Signaturen, die sich nur durch generische Typen unterscheiden, sind nicht zulässig.
  • Warum ist es nicht möglich, primitive Typen direkt in Generika zu verwenden (z. B.: Gen ist ungültig; Sie müssen Gen verwenden).

Sicherheit zur Kompilierungszeit:

  • Obwohl Typinformationen gelöscht werden, prüft der Compiler während der Kompilierung die Typkompatibilität.

7. Fazit

  • Durch die Verwendung von Erasure konnten Generika zu Java hinzugefügt werden, ohne die Abwärtskompatibilität zu beeinträchtigen.
  • Trotz einiger Einschränkungen bieten Generika Typsicherheit zur Kompilierungszeit, während der generierte Code mit früheren Versionen der JVM kompatibel bleibt.

Das obige ist der detaillierte Inhalt vonLöschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage