Bonjour a tous,
je cherche à créer une structuration de class manipulant des objets qui peuvent être des doubles ou des complexes.
Afin de ne pas écrire plusieurs fois les class Point2D, Point3D, vector, matrix... qui manipule soit des doubles soit des complexes j’aimerai utiliser les generics.
J'ai donc créé des class (Point2D, Point3D, vector, matrix...) manipulant des :
MyNumber<>
MyDouble et MyComplex sont des MyNumber<>
Or j'ai un problème à la compilation comme définie en suivant:
en résumé :
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 public interface Numeric<Type> extends Comparable<Type>{ public abstract Type atan2(Type v); public abstract Type atan2(double d); public abstract Type sin(); public abstract Type sinh(); public abstract Type cos(); public abstract Type cosh(); public abstract Type tan(); public abstract Type add(Type v); public abstract Type add(double d); public abstract Type sub(Type v); public abstract Type sub(double d); public abstract Type cube(); public abstract Type sqrt(); ... } public abstract class MyNumber<T> extends Number implements Numeric<T>{...} public class MyDouble extends MyNumber<MyDouble> {...} public class MyComplex extends MyNumber<MyComplex> {...} public class Triedre<Type extends MyNumber<Type>>{ ... private Type a; private Type b; private Type c; public Triedre(Type a, Type b, Type c) { this.a = a; this.b = b; this.c = c; } public Triedre(double a, double b, double c) { this.a = new MyDouble(a); // erreur de compilation this.b = new MyDouble(b); // erreur de compilation this.c = new MyDouble(c); // erreur de compilation } ... }
- MyDouble est de type "MyNumber<MyDouble>"
- le type "Type" dans la class Triedre est de type "MyNumber<Type>"
comment faire en sorte que les types soit compatible?
Merci d'avance pour votre support.
Sébastien.
Partager