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 :

Type générique spécialisé


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Par défaut Type générique spécialisé
    Bonjour,

    Dans le cadre d'un projet de classe, je dois implémenter plusieurs JTable qui affiche différents objets à l'intérieur.

    Pour éviter de devoir créer autant de classe TableModel qu'il y a de types d'objets, j'ai créé une classe générique TableModel<E> qui étant AbstractTableModel.

    J'ai également créé un interface Tablelable, qui contient les méthodes public String[] getColumns() et public Object getValueForCol(int col). Chaque objet qui doit s'afficher dans une table implémente cet interface, du coup je peux retrouver les colonnes et les valeurs de mes objets indépendamment du type.

    Cependant, j'aimerais savoir si le type générique E de mon TableModel peut être spécialisé. J'entends par là qu'il soit limité aux type Tablelable.

    Voici une portion de code en exemple :

    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
     
    //Ici, j'aimerais que E soit un objet Tablelable
    public class TableModel<E> extends AbstractTableModel {
     
    	String[] columns;
    	LinkedList<E> values; 
     
    	public TableModel(Tablelable e) {
    		values = new LinkedList<E>();
    		columns = e.getColumns();
    	}
     
    	@Override
    	public int getColumnCount() {
    		return columns.length;
    	}
     
    	@Override
    	public int getRowCount() {
    		return values.size();
    	}
     
    	@Override
    	public String getValueAt(int row, int col) {
    		if (row < getRowCount() && col < getColumnCount()) {
    			return values.get(row).valueAt(col);
    		}
    		return null;
    	}
     
    	@Override
    	public String getColumnName(int column) {
    		return columns[column];
    	}
     
    }
    Merci beaucoup !

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Oui, tu peux passer par interface, c'est à dire que cette fois tu définis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    interface TableObject {
       ...
    }
    Ensuite les objets que tu veux mettre dans ta table implémentent cet interface, et le TableModel ne voit que des ObjectTable

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    281
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 281
    Par défaut
    Et bien sur tu dois mettre <E extends TableModel>

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 51
    Par défaut
    Merci pour la réponse.

    Cependant, les objets que je souhaite ajouter dans des tables implémentent déjà mon interface Tablelable.

    Par contre, j'ai trouvé un moyen qu'il me semblait exister qui résout mon problème, qui est de spécifié le type de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class TableModel<E extends MonInterface> extends AbstractTableModel
    edit : Merci Druzy

    Merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.0] polymorphisme avec des types générique
    Par mister3957 dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 31/05/2007, 08h11
  2. Type générique paramétré ?
    Par Lebbihi dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2007, 09h58
  3. [Framework] IOC - Type générique
    Par seawolfm dans le forum Spring
    Réponses: 1
    Dernier message: 06/02/2007, 18h17
  4. Réponses: 12
    Dernier message: 23/09/2006, 12h12
  5. y a-t-il un support de types génériques pour python ?
    Par silverhawk.os dans le forum Général Python
    Réponses: 15
    Dernier message: 24/03/2006, 18h23

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