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 :
Voici les soluces qui me viennent à l'esprit qui ne me semblent pas terribles du tout :
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); }
- définir une seule méthode dans Vector2d :
et caster si l'instance est un 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); }
- Définir 2 méthodes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Vector2d v = new Vector2d(); Vector2d w = (Vector2d)(v.getScaled(12));
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)?
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); }
Merci d'avance ^^







Répondre avec citation

Partager