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 :

Généricité en Java (classe avec paramètre)


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Généricité en Java (classe avec paramètre)
    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).

  2. #2
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Ok, ca devrait pas être trop dur.

    1) Tu récupère le type générique transmis à l'instanciation de ta classe, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]
    2) Une fois que tu as la classe, tu peux en créer une représentation tabulaire multidimensionnelle avec la classe statique Array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array.newInstance( clazz, dim1, dim2 );
    Pas testé, mais ça devrait correspondre à ce que tu attends...

Discussions similaires

  1. interaction de java class avec Jframe form
    Par khriji dans le forum Agents de placement/Fenêtres
    Réponses: 0
    Dernier message: 19/03/2012, 15h27
  2. Constructeur de classe avec paramètres
    Par Invité dans le forum Débuter
    Réponses: 10
    Dernier message: 11/12/2010, 14h19
  3. déclarer en xaml un instance de classe avec paramètre
    Par TERRIBLE dans le forum Windows Presentation Foundation
    Réponses: 15
    Dernier message: 15/08/2010, 17h08
  4. javascript vers java (méthodes avec paramètres)
    Par knice dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 16/08/2008, 22h42
  5. [C#][WebServices] Appel methode avec une classe en paramètre
    Par bran_noz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 17h41

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