Class myClass = List.class <MonObject> ???

Voir le sujet précédent Voir le sujet suivant Aller en bas

Class myClass = List.class <MonObject> ???

Message  FûT le Sam 09 Juil 2011, 04:11

Bonjour a tout ceux qui n'ont pas encore déserté dans un pays lointain ... Je vais p-e poser une colle, du moins je ne l'espère pas; en fait tout est dans le titre ! Pour un "petit" projet en java, je dois définir une Class que j'ai donc nommé "myClass", jusqu'ici tout va bien, j'écris donc :
Code:
Class myClass = MonObject.class;

Seulement voilà, j'aimerais aussi pouvoir définir une liste; pas de soucis me direz vous :
Code:
Class myClass = List.class;

.. et tout était bien jusqu'a maintenant ! Ma question est donc peut on "typer" la class list en question ? J'ai eu pas mal de recherche a faire pour le projet en question -que je dévoilerais bientôt- mais LA ... je sèche ! :s
So .. I need help !

Merci d'avance, Fut

Ps : Visiblement avec ce que j'ai déjà parcouru et utilisé, bien des choses sont possible dans l'utilisation de l'OO en Java aussi bas qu'on aille dans le langage (Vive java.lang.*) mais ma question a t'elle une solution, j'en deviens de moins en moins certain !

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  LSV le Sam 09 Juil 2011, 17:19

rien compris Very Happy

Que cherches-tu a faire?

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  FûT le Sam 09 Juil 2011, 19:38

Pour ceux qui ont mal compris (ou pas compris), voici donc un exemple de ce dont j'aimerais faire :
Code:
 
Class c = List.class;
System.out.println (c.isInstance (new ArrayList <String> ()));

Ce morceau de code va joyeusement me répondre TRUE !!! Seulement, j'aimerais pouvoir définir la Class c comme une List "typée" !!!

Ps: cette question est a mon avis plus dédiée au profs .. :-)

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  pbt le Dim 10 Juil 2011, 02:53

Je ne vois pas bien ce que tu veux faire, mais ces deux instructions fonctionnent;
Code:
 List<String> l=  new ArrayList<String>();;
Class c = l.getClass();

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  FûT le Dim 10 Juil 2011, 10:45

Voici une simplification de l'idée :
Code:
import java.util.*;

public class Test {
   public static void main (String [] args) {   
      List <Integer> l = new ArrayList <Integer> ();
      
      System.out.println (TypeTest.PHRASE.compare (l)); // Renvoi évidement faux
      System.out.println (TypeTest.ESSAI.compare (l)); // Renvoi vrai
      System.out.println (TypeTest.DEUXIEME.compare (l)); // Idem pour ici ...
   }
   public enum TypeTest {
      PHRASE (String.class),
      ESSAI (List.class),
      DEUXIEME (List.class);
      /* Ici je voudrais pouvoir typer mes Class List pour différencier
                * les listes d'entier et de chaine de caractère par exemple .. */

      
      private Class myClass;
      private TypeTest (Class myClass) {
         this.myClass = myClass;
      }
      
      public boolean compare (Object o) {
         return myClass.isInstance (o);
      }
   }
}

Je sais qu'il suffirait de rajouter un paramètre a l'énumération et le tester lorsque c'est une liste, j'ai essayé ca fonctionne ... MAIS, je ne trouve pas ca propre surtout qu'en réalité je n'ai pas un seul paramètre mais beaucoup plus ...

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  LSV le Dim 10 Juil 2011, 18:15

Heuu si je comprend bien, il te suffirait de faire plusieurs classes différentes qui héritent de list?

- classe listeEntier
- classe listeChaine

?


Je comprend pas spécialement l'intéret mais ca me semble répondre a ce que tu veux faire..

Sinon, tu peux aussi tester la classe d'un élément de la liste?

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  FûT le Dim 10 Juil 2011, 19:10

Oui donc au lieu de trouver une astuce linguistique de Java, je vais écrire 38 class (... non ce n'est pas un nombre au hasard y en a vraiment 38) ! Non je ne le ferais pas ! ... AMAZING Very Happy Merci mais ça j'y avais déjà pensé. Par contre tester un élément peut-être intéressant CEPENDANT comme je l'ai dit plus haut ca impliquerait que j'ajoute un paramètre a mon énumération ce qui ne m'arrange pas du tout ... :S

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  LSV le Dim 10 Juil 2011, 19:52

je serais quand même curieux de savoir ce que tu veux faire exactement, parce que j'avoue ne pas trop comprendre l'intéret Very Happy

Quoi qu'il en soit, je pense pas qu'il y aie d'autre solutions que ce qui a été dit... Si tu expliquais un peu plus ce que tu souhaites faire, on pourrait peut être mieux t'aider, mais la en l'occurence Very Happy

LSV

Nombre de messages : 638
Age : 27
Prénom : Jérome
Statut : Diplomé 2013
Localisation : Anderlecht
Date d'inscription : 24/09/2007

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  FûT le Dim 10 Juil 2011, 20:56

J'peux pas être plus clair car c'est une infime partie du projet et a priori sans le reste du projet, non ca ne sert a rien ! Dans le cas présent, oui il existe des solutions différentes mais qui ne me conviennent qu'a moitié, on m'a répondu différentes choses sur différents forums cependant le problème reste le même : Impossible de comparé une Class list avec une instanciation de celle ci en précisant la SubClass ... Sauf si quelqu'un a une idée de génie ! ...

Pour satisfaire la curiosité j'vais faire un screencast de l'avancement du projet pour Fora .. :-)

FûT

Nombre de messages : 118
Age : 26
Prénom : Raphaël
Statut : Etudiant en 3ième indu
Date d'inscription : 10/10/2010

http://ittricks.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  mcd le Dim 10 Juil 2011, 22:12

Le problème c'est que les listes génériques (genre List<Integer>) n'existent qu'à la compilation.
Dans le code Javabyte code, ça a complètement disparu et il ne reste que des List.
Du coup, à l'exécution, on peut tester si un objet est une List mais pas si c'est une List<Integer>.
Dans le même ordre d'idée une variable de type Class peut valoir List.class et c'est tout car c'est la seule classe qui existe encore à ce stade.

Je ne peux pas en dire plus car ce que tu veux faire est obscur (est-ce vérifier qu'une liste contient bien ce qui est annoncé ?)


Dernière édition par mcd le Mar 12 Juil 2011, 22:33, édité 1 fois

mcd

Nombre de messages : 1548
Prénom : Marco
Statut : prof
Localisation : Molenbeek
Date d'inscription : 29/09/2006

http://mcd.namok.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  iCart le Dim 10 Juil 2011, 22:31

mcd a écrit:Du coup, à l'exécution, on peut tester si un objet est une List mais pas si c'est une List<Integer>.

A l'exécution, par contre, on peut tester qu'un élément d'une List est un Integer (et -si je ne m'abuse- , par extension, tout les autres éléments...)
Mais le problème ici est de définir la classe et pas de la tester :p

iCart

Nombre de messages : 58
Age : 27
Prénom : Sylvain
Statut : Echappé 2013
Date d'inscription : 09/12/2009

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  pbt le Mar 12 Juil 2011, 16:24

Si tu veux plus d'infos sur ce que dit mcd, tu peux faire des recherche sur non-reifiable types et sur heap pollution. Ça peut t'aider à comprendre et à ne pas écrire de bêtises ;-)

_________________
smartq.namok.be · faq ·  · IRC / irc.freenode.net #esi · blog.namok.be
style #pbt {heigth:189cm; weight:79kg; eye-color:#524000; hair:very short; dead pixels: some; }

pbt
Admin

Nombre de messages : 4862
Age : 45
Prénom : Pierre
Statut : prof
Localisation : La cité des géants
Date d'inscription : 24/11/2005

http://esi.namok.be

Revenir en haut Aller en bas

Re: Class myClass = List.class <MonObject> ???

Message  Contenu sponsorisé Aujourd'hui à 12:36


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum