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 :

Méthode générique non static


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Méthode générique non static
    Bonjour voici un code très simple mais je ne vois pas pourquoi çà coince

    Meci de votre aide

    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
     
    package ajeter;
     
     
    class C <T> {
     
    	public void  m1(<? extends T> val2){
    				System.out.println(val2);
     
    	}
    }
     
    public class Nice2 {
    	public static void main(String[] args) {
    		Integer i = 4;
    		C<Number> c = new C<Number>();
    		c.m1(i);
    	}
    }

  2. #2
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Par défaut
    Bonjour,
    si j'ai bien compris ce que tu veux faire, je te propose ceci :

    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
    class C<T> {
     
      public void m1(T val2) {
        System.out.println(val2);
      }
    }
     
    public class Nice2 {
     
      public static void main(String[] args) {
        C<? super Integer> c = new C<Number>();
        c.m1(4);
      }
     
    }
    cordialement

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par michelp3 Voir le message
    Bonjour voici un code très simple mais je ne vois pas pourquoi çà coince
    Parce que <? extends T> n'est pas un type et n'a donc rien à faire tout seul devant un nom de variable.

    Si tu cherches un type générique auquel on peut assigner n'importe quel objet de type T ou d'un sous-type de T.... Eh ben c'est T, tout simplement. Principe habituel de l'héritage.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Bonjour Thelvin, ncckto
    OK mais alors comment je fais si je souhaite imposer

    que les arguments passés à la méthode soient des classes filles de T

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Uniquement des classes filles et pas T lui-même ? Tu peux pas. Une méthode par classe fille acceptée.

    Bien sûr, une idée simple serait de le faire quand tu choisis T : faire que ce soit une interface, ou une classe abstraite. Comme une interface ou une classe abstraite ne peuvent pas être instanciées, les objets seront forcément de classes filles.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Merci
    Ok pour la question précédente mais ceci est aussi basique et m'ennuie autant

    Pourquoi la méthode add() ne fonctionne pas

    Merci d'avance

    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
     
     
    package ajeter;
     
    import java.util.ArrayList;
    import java.util.List;
     
    class Personne{
     
    }
     
    class Employee extends Personne{
     
    }
     
    public class Nice3_75_76 {
    	public static void main(String[] args) {
    		List <? extends Personne> al = new ArrayList<Employee>();
     
    			Employee employee = new Employee();
     
    			al.add(new Employee());
     
     
    	}
     
    }

  7. #7
    Membre émérite
    Avatar de Cafeinoman
    Homme Profil pro
    Couteau suisse d'une PME
    Inscrit en
    Octobre 2012
    Messages
    628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Couteau suisse d'une PME

    Informations forums :
    Inscription : Octobre 2012
    Messages : 628
    Par défaut
    Comme d'habitude, je suis pas sur, mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Employee employee = new Employee();
     
    			al.add(new Employee());
    ne devrait-il pas être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Employee employee = new Employee();
     
    			al.add(employee);
    et ensuite, si comme c'est dit plus haut tu as fait de Personne une classe abstraite (ou une interface...), pourquoi ne pas mettre simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List <Personne> al = new ArrayList<Employee>();
    Toute complication entraîne un risque d'erreur... Je fais comme ça dans l'appli RH sur laquelle je bosse, et je n'ai pour l'instant jamais vu de Personne abstraite se pointer sur mon UI...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/07/2015, 09h06
  2. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  3. Erreur méthode non générique non trouvé
    Par xavpiaf dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/10/2008, 10h39
  4. [paint] Méthode déclaré en static
    Par Bugmaster dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 23/08/2004, 15h51
  5. [EJB] [JSP] Méthode EJB non reconnue dans jsp
    Par stago dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 06/07/2004, 09h52

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