Maison > Java > javaDidacticiel > Types bruts et code hérité

Types bruts et code hérité

Linda Hamilton
Libérer: 2025-01-03 21:03:45
original
976 Les gens l'ont consulté

Des

Tipos brutos e código legado

types bruts ont été introduits pour permettre la compatibilité entre les codes hérités (pré-génériques) et les génériques introduits dans JDK 5. Ils permettent une transition progressive, mais font des compromis tapez sécurité.

Définitions et fonctionnalités
Type brut :

  • Utilisez une classe générique sans spécifier d'arguments de type. Exemple:
Gen raw = new Gen(new Double(98.6)); // Tipo bruto criado

Copier après la connexion

Compatibilité :

Les variables de type brut peuvent recevoir n'importe quel objet générique et vice versa.
Il n'y a pas de vérification de type au moment de la compilation, ce qui entraîne d'éventuelles erreurs d'exécution.

Exemple de code

// Classe Gen com suporte a genéricos
class Gen<T> {
    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<Integer> iOb = new Gen<>(88);
        Gen<String> 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!
    }
}

Copier après la connexion

Risques liés à l'utilisation de types bruts
Manque de sécurité de type :

  • L'attribution de types bruts à des génériques ou vice versa peut provoquer des erreurs d'exécution.

Exemples :

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

Copier après la connexion

Exceptions d'exécution :

Il n'existe aucun moyen de détecter les incohérences au moment de la compilation.
Exemple :

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

Copier après la connexion

Avertissements de non-vérification :

  • Le compilateur javac génère des avertissements lorsqu'il détecte des types bruts utilisés de manière non sécurisée.

Exemples qui génèrent des avertissements

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

Copier après la connexion

Recommandations
Évitez d'utiliser des types bruts :

  • Utilisez toujours des arguments de type pour profiter de la sécurité offerte par les génériques.

Exemple :

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

Copier après la connexion

Traitez le code existant avec soin :

  • Ajoutez des contrôles et des tests rigoureux lors de l'intégration de code pré-générique avec des génériques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal