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 :

problème avec Class.cast


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut problème avec Class.cast
    Bonjour,

    J'ai un projet concernant la gestion d'un parc machine à réaliser.
    J'ai une classe Machine de définie sous java.
    Et mes données sont sous Oracle.
    Je voudrais faire une lecture dynamique des données de la base et les affecter dans mes classes "metier".
    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
    public ArrayList<DisqueDur> getArrayListDisqueDurBDD(String num) throws Exception {
    		ArrayList<DisqueDur> listDisqueDur=new ArrayList<DisqueDur>();
    		String rqtPreparedStatement="SELECT NUM, MARQUE, MODELE, NUMSERIE, FREQUENCE, CAPACITE FROM DISQUEDUR INNER JOIN MARQUE ON MARQUE.IDMARQUE=DISQUEDUR.IDMARQUE WHERE NUM = ? ";
    		String[] wildCard={num};
    		ResultSet rst= getResultSetBDD(rqtPreparedStatement,wildCard);
    			Field[] disqueDurfields=DisqueDur.class.getDeclaredFields();
    			DisqueDur dd;
    			while (rst.next()){
    				dd= new DisqueDur();
    				for(Field f:disqueDurfields){
     
    					try {
                                                   Object[] args=dd.getClass().getDeclaredField(f.getName()).getClass().cast(rst.getObject(f.getName()))};
                                                    //ce qui va correspondre aux parametres xxxx de setAttribut(xxxx)
    						Utilitaires.lancerMethode(dd,args,new String("set"+Utilitaires.premiereLettreMajuscule(f.getName())));
    					} catch (Exception e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				}//fin for Field f:fields
    				listDisqueDur.add(dd);
    			}//fin while
    			return listDisqueDur;
    	}//fin getListeDisqueDur
    Tout d'abord je ne sais pas si c'est la meilleure technique.
    Et je voudrais passer par un Class.cast car j'ai un attibut DisqueDur.frequence de type Double alors que la valeur du champs "Frequence" du ResultSet et de type bigDecimal.
    Et lorsque que j'arrive à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[] args={dd.getClass().getDeclaredField(f.getName()).getClass().cast(rst.getObject(f.getName()))};
    j'obtiens l'erreur:
    Java.lang.NoSuchMethodException: objetsMetier.DisqueDur.setFrequence(java.math.BigDecimal)
    at java.lang.Class.getMethod(Unknown Source)


    J'ai déja modifié le type du champ dans la base, mais sans succes.
    Je ne comprend pas d'ou vient ce type bigDecimal.

    Autre question, avec cette methode je ne récupère que le attributs déclarés dans la classe DisqueDur, mais DisqueDur hérite d'un autre classe.
    Comment fait-on pour obtenir les attributs de la classe mère? Est-on obligé de passer la SuperClass?

    Merci pour votre aide.

  2. #2
    Membre éclairé Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Par défaut

    PS: Je précise que pour l'instant je travaille sur la classe DisqueDur mais cette méthode deviendra générique <T> une fois que tout cela sera ok.

Discussions similaires

  1. problème avec class vector
    Par abdelmajid_daosabah dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 12/11/2007, 22h40
  2. Problème avec Class.forName
    Par steftanguy dans le forum JDBC
    Réponses: 4
    Dernier message: 14/08/2007, 16h24
  3. problème avec des cast
    Par deubelte dans le forum C++
    Réponses: 3
    Dernier message: 26/02/2007, 18h11
  4. problème avec classe interface
    Par bandit_debutant dans le forum Langage
    Réponses: 6
    Dernier message: 05/11/2006, 20h54
  5. Problème avec classe MySQL
    Par shadeoner dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/07/2006, 11h25

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