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 :

Cast automatique variable


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Par défaut Cast automatique variable
    comment je peux faire un cast automatique sans pour autant spécifier le type de la variable en dure . à mon sens je devrais utilisé la réflexion !!!!

  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
    Probablement, oui, mais...

    - Comment un cast peut-il être autre chose qu'automatique ?
    Tu as l'intention de lire le programme à haute voix et faire prendre des notes à une armée de scribes pour consigner l'état de la mémoire et les changements qui y sont faits ? (Auquel cas, effectivement, ce n'est pas automatique.)

    - À quoi ça te sert de faire un cast si tu ne connais pas le type à l'avance ?
    (Si si, ça peut bel et bien servir dans certaines circonstances... Mais je me demandais si toi, tu en connaissais.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Par défaut
    D’abord je vous remercie d’avoir répondu à mon problème .
    En faite j’ai le moyen de connaitre le type de la variable sans pour autant l’écrire en dure : c’est via une requête , vue que j’ai une table qui centralise les types de mes variables qui sont toutes stockées sous format String .
    Ce que je veux réalisé est le suivant :
    1- récupérer la variable qui est stockée sous format string , et qui peut être un Integer par exemple .
    2- invoquer la requête que je vous ai cité au-dessus pour connaitre le type de la variable dans ce cas elle va me retourner Integer.
    3- enfin je dois faire un cast sans écrire Integer en dure .
    À mon niveau je pense que la réflexion de java peut faire la faire ! vraiment si vous pouvez me communiquer des idées ou des pistes je te serais reconnaissant . Encore merci de tout cœur pour l’intérêt que vous avez porté à mon problème.

  4. #4
    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,



    Avec la reflection je dirais Class.cast()...

    Mais ca dépend surtout de l'usage que tu vas en faire, et sans plus de détail sur le contexte difficile de t'aider...


    a++

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par jeeland Voir le message
    enfin je dois faire un cast sans écrire Integer en dure .
    À mon niveau je pense que la réflexion de java peut faire la faire ! vraiment si vous pouvez me communiquer des idées ou des pistes je te serais reconnaissant . Encore merci de tout cœur pour l’intérêt que vous avez porté à mon problème.
    Tu te rends compte que le cast, ça sert à préciser à java que la variable, stocké dans le champ x de type A, peux être stocké dans le champs y de type B

    Sans écrire B en dure dans le code, tu m'explique comment tu es arrivé à créer le champs / la variable y ??


    J'ai l'impression que tu imagine que le cast peux transformer une String en Integer. Ce n'est pas le cast. Le cast ne fait que demander à la jvm si, quelque chose que tu as supposé à la compilation (exemple que ton Object est un Integer) est toujours vrai à l'exécution (donc que ton object ne contient pas en réalité un String ou un Byte).

  6. #6
    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
    Citation Envoyé par jeeland Voir le message
    En faite j’ai le moyen de connaitre le type de la variable sans pour autant l’écrire en dure : c’est via une requête , vue que j’ai une table qui centralise les types de mes variables qui sont toutes stockées sous format String .
    Ce que je veux réalisé est le suivant :
    1- récupérer la variable qui est stockée sous format string , et qui peut être un Integer par exemple .
    2- invoquer la requête que je vous ai cité au-dessus pour connaitre le type de la variable dans ce cas elle va me retourner Integer.
    3- enfin je dois faire un cast sans écrire Integer en dure .
    Oui donc tu veux faire une conversion de String vers int. Rien à voir avec un cast.

    Citation Envoyé par jeeland Voir le message
    À mon niveau je pense que la réflexion de java peut faire la faire !
    Eh bien ce n'est pas le cas.

    Il va falloir que tu crées un "convertisseur" pour chaque genre de conversion "string vers quelque chose" que tu veux faire.
    Rien ne t'empêche ensuite de faire en sorte que chacun de ces convertisseurs implémentent la même interface, et de garder une instance de chaque dans une Map<String, Convertisseur> indexée par le nom du type à convertir comme tu le récupères de ta database.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre Expert
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Par défaut
    Citation Envoyé par jeeland Voir le message
    Ce que je veux réalisé est le suivant :
    1- récupérer la variable qui est stockée sous format string , et qui peut être un Integer par exemple .
    2- invoquer la requête que je vous ai cité au-dessus pour connaitre le type de la variable dans ce cas elle va me retourner Integer.
    3- enfin je dois faire un cast sans écrire Integer en dure .
    2 remarques :
    1 - ce que tu veux faire, ce n'est pas un cast. C'est transformer un String en Integer (ou autre chose). Pour cela, il faut faire une (ou plusieurs) fonction qui prendra en parametre le String et renverra l'instance correspondante du type voulu.
    2 - Tu veux un Integer sans ecrire Integer en dur. Un cast n'a d'interet que si c'est pour utiliser l'instance en question. Or, pour l'utiliser, tu as bien besoin d'ecrire son type. Bref, il faudrait preciser comment tu l'utilises parce que la, c'est pas clair du tout (et, j'ai l'impression, meme dans ta tete).

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2012
    Messages : 16
    Par défaut
    d'abord merci tout le monde pour de de m'avoir accordé du temps je suis vraiment reconnaissant .

    je reconnais avoir tord vue que j'ai mélangé entre casting et conversion.

    concernant votre proposition Thelvin , j'ai trouvé que c'est une excellente suggestion c'est pour cette raison que je l'ai testée mais apparemment je suis tombé dans le même problème qu casting : voilà le code source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class Test2
    {
     
    	private static Map<String, Convertisseur> mapConvertisseur;
     
    	public static void main(String[] agrs){
    		intMapConvertisseur();
    		String vleur = "33";
    		String typeValeur="Intger";
    // ici il me souligne cette instruction en rouge pour me dire que je dois fair
    / un cast , donc je suis tombé dans le même problème vous voyez !  
    		Integer valeurInteger =  mapConvertisseur.get(typeValeur).getValue(vleur);
    	}
     
    	private static void intMapConvertisseur(){
    		mapConvertisseur = new HashMap<String, Convertisseur>();
    		mapConvertisseur.put("Integer", new ConvertisseurStringIToInteger());
    	}
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     interface Convertisseur
    {
    	public Object getValue(String value );
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class ConvertisseurStringIToInteger implements Convertisseur
    {
    	@Override
    	public Object getValue(String value)
    	{
    		Integer integerValue = Integer.parseInt(value); 
    		return integerValue;
    	}
     
    }
    Merci d'avance.

  9. #9
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // ici il me souligne cette instruction en rouge pour me dire que je dois fair
    / un cast , donc je suis tombé dans le même problème vous voyez !
    Integer valeurInteger = mapConvertisseur.get(typeValeur).getValue(vleur);
    Ben oui tu dois faire un cast. valeurInteger est défini comme un Integer, donc tu dois caster.

    Quel est le problème à cela ?

    a++

Discussions similaires

  1. Cast automatique possible ou pas ?
    Par mercure07 dans le forum Requêtes
    Réponses: 7
    Dernier message: 21/04/2009, 10h20
  2. Problème: texte casté automatiquement en date
    Par ctobini dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2007, 11h10
  3. Selection automatique variable
    Par tardieub dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2007, 11h53
  4. Réponses: 6
    Dernier message: 18/10/2006, 16h34

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