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 :

[Language][Generics]Généraliser une méthode existente


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 65
    Points : 73
    Points
    73
    Par défaut [Language][Generics]Généraliser une méthode existente
    Bonsoir,

    Je tente de redéfinir le composant JComboBox (et son model) de façon à gérer une Combo typée de façon à garantir que la Combo ne contienne que des objets de type T.
    J'ai donc défini une classe typée qui hérite de JComboBox. Par contre, je tombe sur des incohérences. En effet, je souhaiterai redéfinir des méthodes qui prennent en paramètre (ou qui retournent) un type Object. Or je souhaiterai que les méthodes surchargées utilisent le type paramétré T plutôt que Object.
    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
     
    public class JComboBox extends JComponent 
    implements ItemSelectable,ListDataListener,ActionListener, Accessible {
     
    ...
        public void addItem(Object anObject) {
                ...
        }
    ...
     
        public Object getItemAt(int index) {
            return dataModel.getElementAt(index);
        }
    ...
    }
    que je voudrais surcharger de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class TypedComboBox<T> extends JComboBox {
    ...
        public void addItem(T anObject) {
               ...
        }
    ...
        public T getItemAt(int index) {
               ...
        }
    ...
    }
    Or le compilateur n'aime pas le changement de signature, comment faire pour résoudre ce problème ? ou pour le contourner ?

    Merci.

  2. #2
    Membre éprouvé
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Points : 1 210
    Points
    1 210
    Par défaut
    Salut,

    non pour l'écrasement des méthode, la signature doivent être les mêmes Mais dans ton cas, je pense que conceptuellement il est mieux de faire une classe qui a un JComboBox en interne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ComboTyped
    {
        private JComboBox      _combo = new JComboBox();
     
        public ComboTyped() { }
        public JComboBox getComponent() { return _combo; } //à n'utiliser que pour le gui
        public void addItem(T item){ //ajout de l'item }
        public T getItemAt(int index){ return (T)_combo.getModel().getElementAt(index); }
    }
    Je suis pas sur de la méthode getItemAt mais l'idée est la Car en héritant d'une classe en Java tu ne peux pas restreindre les fonctionnalités de celle-ci (donc tu ne peux passer mettre un méthode public de la classe parente en privée dans ta sous-classe, etc)

    @++

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Réponses: 2
    Dernier message: 27/03/2005, 16h09
  3. [GD] Réaliser une ombre
    Par Atomicfryer dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 03/02/2005, 16h35
  4. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48
  5. [TQuery]Réaliser une requete à partir d'une requete
    Par Eric SAULNIER dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/07/2004, 12h00

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