bonjour,
===> DANS LE CADRE DE MON PROJET DE LICENCE .
ca fait 2 jours que je tourne en rend pour trouver une solution"INTELLEGENTE" mais pas moyen.
mon probleme en gros , et comment instancie une matrice dont le type et parameter par deux types generiques
======================================================================
1) le type des (unites) qui constituent le (world)
public abstract class MapUnit<T extends typeTerain,D extends Direction> {
}
Direction (abstract) ==> est herite par les classes : Direction4 et Direction8 ....
TypeTerain (abstract)==> est herite par les classes : Montain, Forest ,Way.....
=========================================================================
2) j'ai cree des types differents par extention de la classe abstract MapUnit (voir en haut), pour pouvoir representer chaque type d'unite par une classe concrete :
public ForestMapUnit extends MapUnit <Forest,Direction4> {. . .}
public MontainMapUnit extends MapUnit <Montain,Direction4> {. . .}
===================================================================================
3) et World qui est parametrer par <T > (TEL QUE "MapUnit" EST "ABSTRACT" voir (1) en haut
public class World < T extends MapUnit > implements MapGetter{
private T[][] map;
public world ( int width, int heigth, T map [][]){
this.map=map; //je passe map en parametre je peut pas l'instancie ici
}
...
}
===========================================================================
4)
sachant que: MapUnit<typeTerain, Direction4>map[][]=new MapUnit<typeTerain, Direction4>[20][25];
et World world2D= new World<T>();
ne sont pas permis en java car impossible d'instancie des types generiques,
============================================================================
question :
=) COMMENT FAIRE POUR CREE UNE map[][] (dans main( ) par exemple pour la passer en parametre a World) tel que le type de map[][] est :
MapUnit<typeTerain, Direction4> ==>(typeTerrain est la classe mere de Montain,Forest,Way ....), sachant que
MapUnit<typeTerain, Direction4>map[][]=new MapUnit<typeTerain, Direction4>[20][25]; est interdit en java.
=) map est de type : MapUnit<typeTerain, Direction4>, car je ne veut pas cree une map qui aura selement un seul type , comme ceci : MapUnit<Montain, Direction4>
==================================================================================
merci de votre reponse ( une solution qui me permet de cree une map[][] avec les types que cite en haut dans la classe main(), pour que je puisse la passer en parametre pour le constructeur de World).
Partager