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(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
// 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.
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.
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.
Gen
GeniOb = new Gen(88); // Correto e seguro
Fügen Sie strenge Schecks und Tests hinzu, indem Sie Pre-Generic in den generischen Code integrieren.
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