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 :

List<Object> list = new ArrayList<Object>();


Sujet :

Collection et Stream Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut List<Object> list = new ArrayList<Object>();
    Bonjour,

    J'ai eu une première discussion hier où je demandais :

    pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Object> list = new ArrayList<Object>();
    et pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<Object> list = new ArrayList<Object>();
    Neewd m'a répondu, j'ai cru avoir tout compris, (List permet une portabilité du code), mais je me demande maintenant comment on peut instancier une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new ArrayList<Object>();
    et affecter l'objet à une interface (List).
    Comment est gérée l'affectation d'un type à un autre ?

    Merci, j'aimerais comprendre !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Sans précaution particulière. Par définition c'est légale donc il y a juste une affectation de valeur à une variable.

  3. #3
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Salut,

    C'est possible grâce au polymorphisme. Regarde du coté de l'upcasting.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  4. #4
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Il n'y a donc pas de controle de type par le compilateur ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bien sûr que si, mais il se trouve que List est une interface et que ArrayList implémente l'interface List.

    ArrayList<Object> est donc un sous-type de List<Object>, et il est normal que le compilateur accepte cette affectation.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    oui, merci pour ces réponses, une difficulté pour moi, cependant :
    une interface ne connait que des attributs constants, que deviennent donc les données de ArrayList qui ne sont pas constants ?

    merci, je pinaille, je pinaille.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par philippe6 Voir le message
    une interface ne connait que des attributs constants,
    Il n'y a pas de changement de nature d'un objet quand tu fais un casting (up ou down), juste une validation par la jvm. Il n'y a rien qui subitement changerait dans l'instance parce que tu fais un casting, si c'est ce que tu veux savoir.

  8. #8
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    Merci,
    il y a tout de même une perte d'information, je pensais qu'on ne pouvait pas (référence à d'autres langages) faire de cast si la valeur véhiculée d'un type à l'autre s'en trouvait changée mais en fait ici c'est sa précision).
    Je comprend donc que je suis dans la situation ou je cast un "float" en "int",
    c'est possible.
    C'est ça ?

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par philippe6 Voir le message
    Je comprend donc que je suis dans la situation ou je cast un "float" en "int",
    c'est possible.
    C'est ça ?
    Non, float -> int c'est autre chose, ce ne sont pas des objet et l'information change. Si tu fais float -> int -> float tu peux obtenir un float différent


    ArrayList -> List -> ArrayList garde toujours la même instance, le casting ne concerne que les références.

  10. #10
    En attente de confirmation mail
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Points : 96
    Points
    96
    Par défaut
    merci,
    j'ai enfin pigé

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

Discussions similaires

  1. [AJAX] liste liée a une liste liée a une liste
    Par dirty_harry dans le forum AJAX
    Réponses: 2
    Dernier message: 03/07/2009, 11h18
  2. Réponses: 14
    Dernier message: 14/12/2007, 15h56
  3. Obtenir un Object[][] à partir d'une ArrayList d'object[]
    Par gufra dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 20/11/2007, 08h43
  4. Réponses: 5
    Dernier message: 30/05/2007, 15h04
  5. caster une List<Object> en List<..>
    Par K-Kaï dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 17h43

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