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 :

Caster un objet mais en mieux.


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 95
    Points
    95
    Par défaut Caster un objet mais en mieux.
    voila mon probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DeprecatedPerson deprecatedPerson = new DeprecatedPerson();
    Person person = (Person) deprecatedPerson;
     
    System.out.println(person.getClass().getName());
    forcement person.getClass().getName() me renvoie DeprecatedPerson

    Je voudrais que la classe de mon objet person soit Person et non DeprecatedPerson.
    Y a t il un moyen pour faire ca?

    vous voyez mon souci?

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


    Il faut faire une copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Person person = new Person(deprecatedPerson); // avec le constructeur de copie qui va bien

    Il n'y a pas moyen de changer le type réel d'un objet.

    a++

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Oui, en créant un nouveau Personne à partir de l'ancien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DeprecatedPerson deprecatedPerson = new DeprecatedPerson();
    Person person = new Person(deprecatedPerson);
    C'est la seule manière que j'envisage à chaud, là.

  4. #4
    Membre régulier Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 95
    Points
    95
    Par défaut
    Arg!

    je dois me taper tous les attributs a la mimine alors?.....

    bon, ben je sais quoi faire de mon apres midi....

  5. #5
    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
    Citation Envoyé par delas Voir le message
    je dois me taper tous les attributs a la mimine alors?.....
    Tu as tant d'attribut que ca ? Tu n'utilises pas d'EDI ?

    Sinon à quoi cela va-t-il te servir ? Parce qu'en général c'est une mauvaise idée de se baser sur le type réel d'un objet pour effectuer des traitements...

    a++

  6. #6
    Membre régulier Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 95
    Points
    95
    Par défaut
    C'est vrai que c'est une rustine ce bout de code...

    J'utilise org.apache.commons.validator.Validator et mon validateur attend une Personne et trouve une DeprecatedPerson...

  7. #7
    Membre régulier Avatar de TrYde
    Homme Profil pro
    Responsable de l'industrialisation logiciel
    Inscrit en
    Juillet 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Responsable de l'industrialisation logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 55
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Ton Validator fait un test sur le type par le nom ou par un instance-of ? Dans le 2e cas, ça ne devrait pas poser de problèmes, vu que l'un dérive de l'autre. Dans le 1e cas, c'est impossible car même avec un cast, c'est la méthode de l'objet qui est appelée, et non celle du parent casté.


    A+

Discussions similaires

  1. version incremente dans l objet mais pas en BD
    Par cdubet dans le forum Hibernate
    Réponses: 4
    Dernier message: 17/05/2007, 20h33
  2. Réponses: 2
    Dernier message: 14/09/2006, 23h00
  3. Caster un objet sur string !!
    Par maximus001ma dans le forum Langage
    Réponses: 3
    Dernier message: 06/06/2006, 13h02
  4. [Débuter] Programmation objet mais conditions particulières
    Par KaptainouK dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 30/09/2005, 00h20
  5. replace, mais en mieux
    Par ryan dans le forum ASP
    Réponses: 2
    Dernier message: 26/04/2005, 21h15

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