Des
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 :
Gen raw = new Gen(new Double(98.6)); // Tipo bruto criado
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! } }
Risques liés à l'utilisation de types bruts
Manque de sécurité de type :
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
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
Avertissements de non-vérification :
Exemples qui génèrent des avertissements
Gen raw = new Gen(new Double(98.6)); // Tipo bruto strOb = raw; // Atribuição insegura
Recommandations
Évitez d'utiliser des types bruts :
Exemple :
Gen<Integer> iOb = new Gen<>(88); // Correto e seguro
Traitez le code existant avec soin :
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!