Mapping Class Java
Résolu
Hurobaki
Messages postés
53
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Dans le cadre d'un exercice je souhaite faire un mapping sur mes classes.
Cependant je rencontre un problème (ou peut-être plusieurs, je suis pas sûr de mon coup ^^'')
La classe Garage.java :
La classe Vehicule.java :
Et mes deux interfaces Map et Function pour le mapping :
Mes deux interfaces sont dans un fichier séparé.
Donc j'implémente l'interface map dans ma classe Garage et l'interface Function dans ma classe Vehicule.
Ce que je ne parviens pas à faire serait de déclarer une instance de Garage et d'accéder à une méthode qui me permette comme je le voudrai de mettre les compteurs à 0.
Exemple :
En admettant bien sûr qu'il y ai déjà des Vehicule de présents dans le Garage.
Mon problème est la création de la méthode resetAll() que je mettrai dans la classe Garage. Je ne sais pas quoi instancier car ma méthode :
J'espère avoir expliqué au mieux mon problème et avoir mis assez de code pour que ce sois compréhensible :/
Si quelqu'un aurait la gentillesse de m'expliquer je lui en saurait très reconnaissant ! :D
Dans le cadre d'un exercice je souhaite faire un mapping sur mes classes.
Cependant je rencontre un problème (ou peut-être plusieurs, je suis pas sûr de mon coup ^^'')
La classe Garage.java :
package exercice5; import java.util.*; public class Garage implements Iterable<Vehicule>, VehiculeComparator, Map { private List<Vehicule> garage; public Garage() { this.garage = new ArrayList<Vehicule>(); } public void add(Vehicule v) { this.garage.add(v); } @Override public void map(Function f) { for(Vehicule v : garage) { f.applyIt(v); } }
La classe Vehicule.java :
package exercice5; import java.text.DecimalFormat; public class Vehicule implements Comparable<Vehicule>, Function { @Override public void applyIt(Vehicule v) { v.getCompteur().resetPartiel(); }
Et mes deux interfaces Map et Function pour le mapping :
public interface Function { abstract public void applyIt(Vehicule v); } public interface Map { abstract public void map(Function f); }
Mes deux interfaces sont dans un fichier séparé.
Donc j'implémente l'interface map dans ma classe Garage et l'interface Function dans ma classe Vehicule.
Ce que je ne parviens pas à faire serait de déclarer une instance de Garage et d'accéder à une méthode qui me permette comme je le voudrai de mettre les compteurs à 0.
Exemple :
Garage g = new Garage(); g.resetAll();
En admettant bien sûr qu'il y ai déjà des Vehicule de présents dans le Garage.
Mon problème est la création de la méthode resetAll() que je mettrai dans la classe Garage. Je ne sais pas quoi instancier car ma méthode :
public void map(Function f)prend en paramètre un type Function.
J'espère avoir expliqué au mieux mon problème et avoir mis assez de code pour que ce sois compréhensible :/
Si quelqu'un aurait la gentillesse de m'expliquer je lui en saurait très reconnaissant ! :D
A voir également:
- Mapping Class Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Bonjour,
C'est une mauvaise idée d'appeler tes classes Map et Function...
On ne peut pas te demander de connaître les 4000 classes fournies par Java mais il y en a quelques unes comme Map qui sont incontournables et si tu réutilises ce nom pour faire d'autres classes qui n'ont rien à voir, cela va rapidement poser problème, en particulier si tu fais un import big bang avec java.util.* alors que justement la classe Map de Java est dans java.util
Donc déjà, enlèves l'
Ensuite, les méthodes dans les interfaces ne doivent pas porter le mot clé abstract (c'est réservé aux classes abstraites).
Remarque : un code complet serait le bienvenue, parce qu'en l'état je ne peux pas tester vu qu'il manque des méthodes un peu partout... ce qui ne m'aide pas non plus pour comprendre ce que tu cherches à faire (c'est confus)
PS. En quelle version de Java est-ce que tu codes ?
La confiance n'exclut pas le contrôle
C'est une mauvaise idée d'appeler tes classes Map et Function...
On ne peut pas te demander de connaître les 4000 classes fournies par Java mais il y en a quelques unes comme Map qui sont incontournables et si tu réutilises ce nom pour faire d'autres classes qui n'ont rien à voir, cela va rapidement poser problème, en particulier si tu fais un import big bang avec java.util.* alors que justement la classe Map de Java est dans java.util
Donc déjà, enlèves l'
import java.util.*;pour le remplacer par des imports plus spécifiques (List, ArrayList, Iterator), et précises à quoi est censé servir ta classe "Map" dans ton cas.
Ensuite, les méthodes dans les interfaces ne doivent pas porter le mot clé abstract (c'est réservé aux classes abstraites).
Remarque : un code complet serait le bienvenue, parce qu'en l'état je ne peux pas tester vu qu'il manque des méthodes un peu partout... ce qui ne m'aide pas non plus pour comprendre ce que tu cherches à faire (c'est confus)
PS. En quelle version de Java est-ce que tu codes ?
La confiance n'exclut pas le contrôle
Merci pour ta réponse, je code avec la dernière version de Eclipse je ne sais pas quelle est la version de Java ...
Je comprends ce que tu me dis j'ai donc fais les changements nécessaires et j'ai "réussi" à trouver une façon de faire qui fait ce que je veux :
Je crée ma Function et je redéfinis la méthode contenue dans l'interface pour ensuite la passer en paramètre à ma méthode map (qui est vrai est un mauvais nom de méthode ...)
Je comprends ce que tu me dis j'ai donc fais les changements nécessaires et j'ai "réussi" à trouver une façon de faire qui fait ce que je veux :
public void resetPartielAll() { Function f = new Function() { @Override public void applyIt(Vehicule v) { v.getCompteur().resetPartiel(); } }; map(f); }
Je crée ma Function et je redéfinis la méthode contenue dans l'interface pour ensuite la passer en paramètre à ma méthode map (qui est vrai est un mauvais nom de méthode ...)
"avec la dernière version de Eclipse je ne sais pas quelle est la version de Java"
Eclipse c'est juste un éditeur de texte, c'est la version de Java qui compte !
Si tu codes en Java 8, ce que tu as écris juste au dessus se simplifie comme ceci :
D'où l'intérêt de savoir dans quelle version de Java tu codes !
Eclipse c'est juste un éditeur de texte, c'est la version de Java qui compte !
Si tu codes en Java 8, ce que tu as écris juste au dessus se simplifie comme ceci :
public void resetPartielAll() { map(v -> v.getCompteur().resetPartiel()); }
D'où l'intérêt de savoir dans quelle version de Java tu codes !
Effectivement ça n'a rien à vois l'éditeur et la version de Java ... J'ai regardé je suis en Java 8 et donc ton bout de code marche très bien !
Merci d'avoir pris le temps de m'expliquer :)
Merci d'avoir pris le temps de m'expliquer :)
Du coup tu peux supprimer tes interfaces Map et Function pour utiliser les interfaces standard de Java 8, dans ton cas java.util.function.Consumer conviendrait pour les deux.