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

Java Discussion :

Quel est le but de la transtypage multiple en Java ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Femme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2022
    Messages : 1
    Par défaut Quel est le but de la transtypage multiple en Java ?
    J'ai parcouru un morceau de code en Java aujourd'hui, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    long longValue = 100;
    byte b = (byte)(short)(int)longValue;
    byte byteValue = 100;
    long l = (long)(int)(short)byteValue;
    System.out.println(b+l);
    Quel est le but du type casting plusieurs fois, de int à short à byte et de short à int à long ? Cela pourrait-il avoir un effet en supposant que je lance directement de long à octet ou l'inverse?

    Le code ci-dessus n'a eu aucun effet en aucun cas, lorsqu'il n'y avait pas de conversion de type explicite !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    oui non ça ça sert à rien. D'ailleurs il semble que le compilateur le remplace directement par le dernier cast.

    Là où ça peut avoir un effet c'est par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int n = 200;
    int n2 = (byte)n;
    Un cast explicite de int vers byte, suivi d'un cast implicite de ce byte vers int pour le réassigner à une variable int.

    Le truc c'est qu'on ne peut pas stocker de valeur supérieure à 127 dans un byte, donc le cast de 200 vers byte déclenche un dépassement de capacité qui convertit la valeur en un byte négatif.

    Ça peut "servir" à "stocker dans un int la valeur du byte qu'on obtiendrait si on essayait de stocker cette valeur dans un byte." Un peu tiré par les cheveux, mais peut servir pour du code de test un peu bizarre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 770
    Par défaut
    Je pense que l'exemple est mauvais

    Sur stackoverflow, le double cast était 1 "up casting" suivi d'1 "down casting" : en gros, tu castes 1 classe fille B en 1 interface I d'1 classe mère A pour recaster I en classe fille B.
    Spoiler alert : si tu fais cela, c'est qu'il y a 1 truc que tu as codé salement

    Donc, voila tes long, int, byte, ... ne tombent pas dans ce cas d'héritage.

Discussions similaires

  1. Quel est le but de ce forum ?
    Par Heureux-oli dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/02/2008, 20h40
  2. Réponses: 4
    Dernier message: 02/08/2007, 14h11
  3. Quel est le nombre maximum de boucles imbriquées (C, Java, Fortran) ?
    Par torNAdE dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 28/06/2007, 16h18
  4. Réponses: 7
    Dernier message: 06/04/2005, 19h18

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