Comparaison de type en java

Discutez d'informatique ici !
Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

Comparaison de type en java

par Rockleader » 03 Déc 2014, 10:33

Bonjour,

j'ai essayé de m'intéresser à la partie bonus de l'un de mes tp java et l'on me demande de faire quelque chose de nouveau pour lequel j'aurai besoin d'un peu d'aide^^

Définir l’interface Type contenant une opération de comparaison de types et les classes TInt, TBool et TList implantant cette interface. Les classes définiront aussi la méthode toString permettant d’afficher les types selon la syntaxe Caml. Par exemple, une liste de liste d’entiers sera affichée int list list.


Ma question est en réalité assez simple, comment fait on pour comparer des types è_é

J'imagine qu'il doit y avoir des fonctions définies dans le langage style isInt isBool etc etc qui devraient être capable de renvoyer un booléen en fonction du type argument mais ça me parait quand même un peu fumeux tout ça :hum:
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 03 Déc 2014, 10:48

salut,

un peu fumeux ya surement plus simple

normalement comparer des types c'est
compare(type1 , type2); //retourne vrai si type1 est de type2

dans le cas ou type1 est Car et type2 est Wheel par exemple, tu peux utiliser la réflexion de java
http://fr.wikibooks.org/wiki/Programmation_Java/R%C3%A9flexion

par exemple
car1.getClass() == type2.getClass()

malheureusement, ca ne marche pas avec les primitifs
https://docs.oracle.com/javase/tutorial/reflect/class/classNew.html
(si c'est pas un Car mais un int ou un boolean)

donc les gérer séparément
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

et enfin faire gaffe à l'héritage (voir instanceof)
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 04 Déc 2014, 09:11

on peut s'en sortir plus simplement
Code: Tout sélectionner
/*
 Tous les types sont objectfs, et les primitifs sont probablement uppés en Object lors du passage à compare.
 Il reste plus qu'à tester si un objet est une instance du type de l'autre (fils ou de meme type strict)
*/
  public static boolean compare(Object a, Object b){
    return a.getClass().isInstance(b) || b.getClass().isInstance(a);
  }
la vie est une fête :)

Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 19:42

par Rockleader » 04 Déc 2014, 11:47

Je vais essayer de m'en sortir avec les pistes que tu m'as donné, merci.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 9 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite