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 :

Covariance sous 1.4


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Covariance sous 1.4
    Salut,
    j'ai une classe Vector3d qui hérite d'une classe Vector2d et j'aimerais pouvoir appeler une méthode en fonction du type de l'instance :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Classe Vector2d
    	public Vector2d getScaled(float scalar) {
    		return new Vector2d(this.x * scalar, this.y * scalar);
    	}
     
    // Classe Vector3d
    	public Vector3d getScaled(float scalar) {
    		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
    	}
    Voici les soluces qui me viennent à l'esprit qui ne me semblent pas terribles du tout :
    - définir une seule méthode dans Vector2d :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Vector3d getScaled(float scalar) {
    		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
    	}
    et caster si l'instance est un Vector2d :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Vector2d v = new Vector2d();
    Vector2d w = (Vector2d)(v.getScaled(12));
    - Définir 2 méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Classe Vector2d
    	public Vector2d getScaled2d(float scalar) {
    		return new Vector2d(this.x * scalar, this.y * scalar);
    	}
     
    // Classe Vector3d
    	public Vector3d getScaled3d(float scalar) {
    		return new Vector3d(this.x * scalar, this.y * scalar, this.z * scalar);
    	}
    Quelqu'un connaîtrait-il une solution plus propre ? Y aurait pas un mot-clé permettant de désigner la classe courante et utilisable comme type de retour (ce qui permettrait de redéfinir la méthode)?
    Merci d'avance ^^

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ce système ne devient permis qu'avec java 5.

    Donc pour java 1.4 ce n'est pas la peine de se casser la tête... Tu fais comme tu veux, sachant que ce problème sera résolu de base avec java 5. Habituellement on faisait un simple cast, comme avec Graphics et Graphics2D, tout le monde savait que ce n'était pas tellement élégant, et c'est sans doute pour cela qu'ils l'ont mise avec le 5.

    On te pardonne d'avance.

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    En fait, je cherche le moyen le plus efficace pas le code le plus élégant ^^
    Merci pour ta réponse.

Discussions similaires

  1. Covariable sous une GLM
    Par elitatoun dans le forum SAS STAT
    Réponses: 0
    Dernier message: 07/02/2015, 16h21
  2. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 15h18
  3. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 18h45
  4. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 16h57
  5. Réponses: 4
    Dernier message: 27/03/2002, 12h03

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