„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Tipps zum Umgang mit groben Typen und Legacy -Code

Tipps zum Umgang mit groben Typen und Legacy -Code

Gepostet am 2025-04-17
Durchsuche:305

Tipos brutos e código legado

Brutto-Typen wurden in die Kompatibilität zwischen Legacy-Codes (prägenerischer) und den Generika in jdk eingeführt. Definitionen und Eigenschaften

Bruttometyp:
Verwenden Sie eine generische Klasse, ohne Typargumente anzugeben. Beispiel:

  • gen raw = new Gen (neues Double (98.6)); // Rohtyp erstellt
Gen raw = new Gen(new Double(98.6)); // Tipo bruto criado

Bruttometypvariablen können alle generischen Objekte empfangen und umgekehrt. Es gibt keine Überprüfung der Typen in der Kompilierungszeit, was zu möglichen Fehler in der Ausführungszeit führt.


Code Beispiel

// Gen -Klasse mit generischer Unterstützung Klasse gen { T OB; // deklariert ein Objekt vom Typ t Gen (T O) {// Konstruktor Ob = o; } T getOb () {// gibt das Objekt zurück Rückkehr OB; } } // Demonstration von Bruttentypen Klasse Rawdemo { Public static void main (String [] args) { // Generika richtig verwenden Gen iOB = new Gen (88); Gen strob = new Gen ("Genericstest"); // Erstellen eines Bruttentyps Gen Raw = New Gen (New Double (98,6)); double d = (double) raw.getOB (); // arbeitet, verliert aber die Sicherheit von Typen System.out.println ("Wert:" D); // Fehler bei der Ausführungszeit mit Bruttentypen // int i = (Integer) raw.getOB (); // Laufzeitfehler! // Bruttometypzuweisung für generische Strob = roh; // korrekt, aber gefährlich // String str = strob.getOB (); // Laufzeitfehler! // generische Bruttobeschreibung RAW = IOB; // korrekt, aber gefährlich // d = (doppelt) raw.getOB (); // Laufzeitfehler! } }

// Classe Gen com suporte a genéricos
class Gen {
    T ob; // Declara um objeto do tipo T

    Gen(T o) { // Construtor
        ob = o;
    }

    T getob() { // Retorna o objeto ob
        return ob;
    }
}

// Demonstração de tipos brutos
class RawDemo {
    public static void main(String[] args) {
        // Usando genéricos corretamente
        Gen iOb = new Gen(88);
        Gen strOb = new Gen("Generics Test");

        // Criando um tipo bruto
        Gen raw = new Gen(new Double(98.6));
        double d = (Double) raw.getob(); // Funciona, mas perde segurança de tipos
        System.out.println("value: "   d);

        // Erros de tempo de execução com tipos brutos
        // int i = (Integer) raw.getob(); // Erro de tempo de execução!

        // Atribuição de tipo bruto para genérico
        strOb = raw; // Correto, mas perigoso
        // String str = strOb.getob(); // Erro de tempo de execução!

        // Atribuição de genérico para tipo bruto
        raw = iOb; // Correto, mas perigoso
        // d = (Double) raw.getob(); // Erro de tempo de execução!
    }
}

Mangel an Type Sicherheit:
Zuordnen von Bruttentypen Generika oder umgekehrt zu Fehlern in der Ausführungszeit.

  • Beispiele:

strob = raw; // gefährlich: RAW enthält doppelt, aber Strob wartet auf String RAW = IOB; // gefährlich: RAW jetzt enthält Ganzzahl, aber Zwang kann scheitern

strOb = raw; // Perigoso: raw contém Double, mas strOb espera String
raw = iOb; // Perigoso: raw agora contém Integer, mas coerção pode falhar

Es gibt keine Möglichkeit, Inkonsistenzen in der Kompilierungszeit zu erkennen. Beispiel:


int i = (Integer) raw.getOB (); // Fehler, warum RAW doppelte enthält

int i = (Integer) raw.getob(); // Erro porque raw contém Double

Der Javac -Compiler erzeugt Warnungen, wenn er unsicher verwendete Bruttentypen erkennt.

  • Beispiele, die Warnungen erzeugen

gen raw = new Gen (neues Double (98.6)); // Bruttentyp Strob = roh; // unsichere Zuordnung

Gen raw = new Gen(new Double(98.6)); // Tipo bruto
strOb = raw; // Atribuição insegura

Vermeiden Sie die Verwendung von Bruttentypen:
Verwenden Sie immer Argumente, um die von Generika angebotene Sicherheit zu genießen.

  • Beispiel:

Gen iOB = New Gen (88); // korrekt und sicher

Gen iOb = new Gen(88); // Correto e seguro

Fügen Sie strenge Schecks und Tests hinzu, indem Sie Pre-Generic in den generischen Code integrieren.

Freigabeerklärung Dieser Artikel ist reproduziert unter: https://dev.to/javaparainiciantes/tipos-brutos-e-codigo- legado-3c6m?1 Wenn es zu Verstößen besteht, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3