Bonjour,
J'ai deux interfaces à implémenter. Je suis en 1.6 et bien entendu ces interfaces ne sont pas modifiables. Les voici :
Graph<P>
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface Graph<P> { public P[][] getPoints(); public P getPoint(int x, int y); }
Point
J'ai créé une implémentation de Point, PointImpl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public interface Point { public int getX(); public int getY(); }
PointImpl
Jusqu'ici aucun problème... parcontre j'en recontre dans l'implémentation de Graph, GraphGrid :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class PointImpl implements Point { private int x; private int y; public PointImpl(int x, int y) { this.x = x ; this.y = y} public int getX() { return x;} public int getY() { return y;} }
GraphGrid
Je suis obligé de respecter les signatures des méthodes de l'interface graph... (getPoints et getPoint) mais le compilo me sort :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class GraphGrid<P extends Point> implements Graph<P> { private final PointImpl[][] points; public GraphGrid(int width) { points = new PointImpl[width][width]; for(int i = 0 ; i < width; i++) { for(int j = 0 ; j < width; j++) points[i][j] = new PointImpl(i,j); } } public P[][] getPoints() { return points; } public P getPoint(int x, int y) { return points[x][y]; } }
cannot convert from PointImpl[][] to P[][]......
Que dois-je donc réellement faire pour implémenter cette interface?
Merci d'avance de votre aide !
Partager