CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Un cast réalisable ?

moumous95
moumous95
Niveau 6
02 janvier 2020 à 21:01:43

Bonjour à tous !
J'aurais une petite question concernant la réalisation d'un cast qui me semble impossible.
J'ai une Class de type Abstract que l'ont va appeler A. J'ai une autre class (public) qui hérite de A que l'on va appeler B.
On me dit de créer une List : "List <A> list" qui est censé pouvoir contenir des éléments B alors que celles-ci ont les variables supplémentaires de la class B que la class A n'a pas.

Est-il possible de contenir un élément de la class B dans une liste : "List<A>list" ?
Pour moi ça n'est pas possible mais j'aimerai m'en assurer. Merci par avance pour les éventuelles réponses :-)

_S0uL
_S0uL
Niveau 9
02 janvier 2020 à 21:11:23

Si c'est possible. C'est le principe de la classe abstraite. Tu ne peux pas instancier ce type de classe. Si tu déclare un objet appartenant à cette classe tu dois l'instancier avec une de ses classes filles.

Message édité le 02 janvier 2020 à 21:11:41 par _S0uL
moumous95
moumous95
Niveau 6
02 janvier 2020 à 21:39:47

Merci de ta réponse !
Mais du coup je vois mal comment le faire car à l'exécution cela ne fonctionne pas pour moi.
De que ce que je comprends (et c'est surement faux vu mes essais infructueux) il faudrait instancier de cette manière:
"A element = new B()" mais après comment l'intégrer dans "List<A> list" ?
Personnellement je n'ai réussis qu'à obtenir une erreur d'exécution.

De plus il y a une chose que je ne comprends pas. Comment l'instanciation peut marcher sans perdre les variables qui sont présentes dans la class B ? Utiliser un référent du type de la class mère n'apporte-t-il pas certains problèmes ?

Message édité le 02 janvier 2020 à 21:42:35 par moumous95
_S0uL
_S0uL
Niveau 9
02 janvier 2020 à 21:49:25
A element = new B();
List<A> list = new ArrayList<A>(); // List est aussi une classe abstraite
list.add(element);

Ça fait longtemps que j'ai pas touché à du Java (depuis la sortie de la version 8) et j'ai pas de JDK sous la main mais je suppose que ça a pas trop changé ça devrai fonctionner ça.

Message édité le 02 janvier 2020 à 21:50:05 par _S0uL
moumous95
moumous95
Niveau 6
02 janvier 2020 à 21:59:53

Je viens de trouver mon erreur !
Je pensais avoir instancier ma liste plus haut mais il se trouvait que non, je me suis perdu dans mon code ^^
Merci beaucoup pour ton aide, je pensais vraiment que mon problème venait d'ailleurs ^^

boucif
boucif
Niveau 24
02 janvier 2020 à 23:21:19

Je sais pas si t’as la covariance et la contravariance en java, mais avec ça tu peux aller plus loin ...

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment