IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Class.newInstance et Array.newInstance


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Par défaut Class.newInstance et Array.newInstance
    Ma question est liée au problème que j'ai soulevé ici et qui s'est perdu dans une discussion sur le casting alors que ce n'était pas du tout le sujet. Le casting n'est pas non plus le sujet ici.

    Il y a quelque chose que je ne trouve pas cohérent.
    Pourquoi Class.newInstance retourne T (donc une référence sur le type instancié) alors que Array.newInstance retourne une référence sur Object?

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Onarap
    Il y a quelque chose que je ne trouve pas cohérent.
    Pourquoi Class.newInstance retourne T (donc une référence sur le type instancié) alors que Array.newInstance retourne une référence sur Object?
    A l'origine les deux retournaient un Object (qui peut aussi représenter un tableau). Ce n'est qu'avec Java 5.0 que Class.newInstance() a été adapté pour utiliser les Generics.


    Par contre cela n'as pas été fait avec Array.newInstance() car ce dernier peut être utilisée avec les types primitifs ce qui pose probème (tu ne pourrais pas créer de tableau de type primitif avec les Generics).


    Si tu n'utilises pas les types primitifs tu peux te faire une méthode englobante qui utilise les Generics :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        @SuppressWarnings("unchecked") // ne peut pas arriver, sauf avec les types primitifs
        public static <T> T[] newArray(Class<T> type, int lenght) {
            return (T[]) Array.newInstance(type, lenght);
        }
    a++

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2004
    Messages : 118
    Par défaut
    Excellent! Merci.
    Du coup, cela a même résolu mon premier problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Classes/Multi Dimensional Array
    Par Tom0925 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/07/2011, 16h56
  2. Problème classes contenant des arrays
    Par ayinay dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/02/2010, 16h57
  3. Classe héritant de Array / Souci d'accès aux données
    Par kraps dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 22/07/2009, 15h18
  4. Pourquoi utiliser Class.forName().newInstance()
    Par menzlitsh dans le forum Langage
    Réponses: 4
    Dernier message: 27/07/2007, 14h00
  5. Réponses: 3
    Dernier message: 25/06/2007, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo