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

Langage Java Discussion :

[CASTS]problème de cast de Time


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut [CASTS]problème de cast de Time
    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
    21
    22
    23
    /*j'ai un tableau input*/
     
    MiniTable input ;
    ...
    /*je désigne à la ième colonne la classe Time*/
     
    input.setColumnClass(2,Time.class,false);
    ...
     
    java.util.Date k =null,b=null;
    try{
    k.setTime(((Time)input.getValueAt(i,2)).getTime()); /*ligne*/
    b.setTime(((Time)input.getValueAt(i,3)).getTime()); 
     
     
        		while (rs.getDate(1).before(k) || rs.getDate(1).after(l))
        			i++;
    }
     
    catch(Exception e)
    {
     e.printStack();
    }

    j'ai droit à un ClassCastException
    lors de l'exécution de la ligne

  2. #2
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 42
    Points : 50
    Points
    50
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.getValueAt(i,2)).getTime()
    la methode MiniTable.getValueAt(int, int) renvoie quel type?
    la methode MiniTable.getValueAt(int, int).getTime() renvoie quel type?
    Regarde bien le type de retour avant tout casting.

    D'autres parts les pointeurs k et b sont null donc tu auras uprobablement une exception.

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    MiniTable hérite de JTable

    getValueAt(int,int)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public Object getValueAt(int row, int column) {
            return getModel().getValueAt(row, convertColumnIndexToModel(column));
        }
    retourne un Object
    et moi je suis entrain de stocker des Date dans les cases de mon tableau

    donc normalement si j'ai bien intuit

    quand je caste avec Time la valeur de retour de getValuAt()
    quand j'utilise la methode getTime(), elle est sensée me retourner un long


    c'est pour ça que j'utilise par la suite cette valeur pour le set de l'attribut TIME dans les instances k et b

    remarque: même en initiant k et b en utilisant new Date() j'ai eu la meme exception

    et le problème que j'arrive pas à comprendre: c'est que certains
    appels similaires de cast dans mon programme fonctionnent au débogage!!!

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par DeVoN
    et moi je suis entrain de stocker des Date dans les cases de mon tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k.setTime(((Time)input.getValueAt(i,2)).getTime());
    Si tu stoques des Date, pourquoi tu caste en Time ?

    a++

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    au fait:

    je dois comparer deux horaires: format (hh:mm:ss) qui proviennent d'une requête et d'un tableau
    je me suis arrangé de ne récupérer que les heuresen utilisant rs.getTime(), mais en réalité ce sont des dates qui proviennent d'une BD Oracle

    -une heure qui provient d'un ResultSet

    -une heure qui provient d'un MiniTable (hérite de JTable)

    -si récupère ces données en utilisant Date je et je les compare avec before et after de Date je risque d' avoir :

    01-01-1970 00:00:01 > 22-02-2006 00:00:00

    -j'ai créé une classe Heures qui manipules les Heures seulement

    -j'ai besoin des heures, minutes et secondes

    -je les récupère en utilisant: getHours(), getMinutes() et getSeconds()
    pour alimenter le constructeur de ma classe personnalisée Heure


    avec ResultSet c'est simple puisque 'elle me retourne un Time

    mais avec la MiniTable c'est pas évident il faut que je caste un
    getValueAt(int,int) à Time pour exécuter son getTime()


    ça me rend fou !
    pasque des fois ça marche des fois non ! ((

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
     
     public void retardInventaire(ResultSet rs, MiniTable input,MiniTable abs,int j,Time lastday,Heures lasthour)
        {
        	SimpleDateFormat form= new SimpleDateFormat("dd/MM/yyyy");
        	Vector vect= new Vector(12);
     
    try{
     
        		Heure retard= null;	
     
        		int i=0;
        		while (rs.getDate(1).equals(input.getValueAt(i,1)))
        			i++;
     
        		/**
                     * h1 heure entrée*/
     
        		java.sql.Time t = rs.getTime(3);
        		Heures h1 = new Heures(t.getHours(),t.getMinutes(),t.getSeconds());
        		//java.util.Date t2 =new java.util.Date();
        		/**
                     *  h3 heure début pause régime*/
        		t.setTime(((Time)input.getValueAt(i,5)).getTime());/////////////////////////Là ça marche
        		Heures h3=new Heures(t.getHours(),t.getMinutes(),t.getSeconds());
     
        			/*quand il s'agit de 1ère séance*/
        			if(h1.before(h3))
     
        			{   /**
                                     * h2 heure début 1ère séance régime*/
        				t.setTime(((Time)input.getValueAt(i,4)).getTime());/////////////////////////Là aussi ça marche
        				Heures h2=new Heures(t.getHours(),t.getMinutes(),t.getSeconds());
     
        				/*quand il s'agit d'un retard à l'arrivée*/
        				if (h1.after(h2))
        				{
        					 retard = Heures.minus(h1,h2);
     
        				}
        			}
     
        			/*quand il s'agit de la 2ième séance*/
        			else 
        			{   /**
                                 * h4 heure fin pause régime*/
        	    		t.setTime(((Time)input.getValueAt(i,6)).getTime());//////////////////Là ça marche pas!!!!!!!!!!!!!!!
        	    		Heures h4=new Heures(t.getHours(),t.getMinutes(),t.getSeconds());
     
        				/*quand il s'agit de deux séances par jour*/
        				if (h1.after(h3) && h1.before(h4))
        				{
        					if (test)
        					{
        						traitement
        					}
        					else
        					{
        						traitement
        					}
        				}
        				else if (h1.after(h4))
        				{
        					retard = Heure.addition(retard,Heures.minus(h1,h4));
        				}
        			}
     
        		            traitement
     
     
        		}
        	catch (Exception e)
        		{
        		e.printStackTrace();
        		}
     
     
        }

  6. #6
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    si tu veux faire des additions de dates ou horaires, utilise des Calendar, ça t'évitera de redéfinir tes propres classes
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

  7. #7
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 18
    Points : 6
    Points
    6
    Par défaut
    ce n'est pas la classe Heure qui me dérange, je l'ai testée et retestées

    et dans cette partie de code elle m'a donné des résultats corrects dans les
    chemins d'exécution qui ne rencontrent par d'Exception dûes au cast.

    mon problème réside dans le cast uniquement

  8. #8
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    comme a priori tu stockes des dates caste tes getValue en Date, et si tu veux absolument un time :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Time t = new Time(la_date.getTime());
    Ignorer c'est aussi croire que l'on sait.
    Merci d'essayer d'écrire correctement.
    Pas de questions techniques par MP SVP.

Discussions similaires

  1. [C#]problème de casting
    Par Blo0d4x3 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/05/2006, 15h56
  2. [JDBC Driver][JSTL] Problème de cast de données
    Par GyLes dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/09/2005, 10h00
  3. problème de cast!
    Par LaseLiep dans le forum Langage
    Réponses: 3
    Dernier message: 03/06/2005, 09h30
  4. Problème de cast/serialization/externalization ?
    Par Linlin dans le forum CORBA
    Réponses: 1
    Dernier message: 06/12/2004, 16h46
  5. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42

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