Oui je suis d'accord dans ce cas là puisque les deux objets au même niveau.
Je recherche simplement un moyen de retourné deux valeurs de type différent dans une même fonction.
Je vais expliquer mon réel problème :
Je possède une 3 classes : Bibliotheque, Etagere et Livre
Les Bibliotheques contiennent des Etageres qui contiennent des Livres.
Dans Bibliotheque je veux une méthode getLivre qui me renvoi le livre, ainsi que l'étagère dans laquelle il se trouve
Cela donne :
Code :
- public class Bibliotheque {
- private List<Etagere> etageres;
- public Bibliotheque (){
- etageres = new ArrayList<>();
- }
- public Livre getLivre(int num){
- // Je veux recuperer le livre et l'etagere ou est le livre
- for(Etagere etage : etageres)
- for(Livre livre : etage.livres) // oui sa liste est public voyons :D
- if (livre.getNum == num)
- return livre; // Je veux aussi renvoyer etage
- }
- }
- public class Etagere{
- private List<Livre> livres;
- public Etagere (){
- livres= new ArrayList<>();
- }
- }
- public class Livre{
- private int num;
- public Livre (int n){
- num = n;
- }
- public int getNum(){
- return num;
- }
- }
|
Voila, comment récupérer le Livre et l'Etagere à la fois dans getLivre ?
Je veux éviter le surplus de code inutile tel que de reparcourir les listes pour un résultat qu'on a déjà.
C'est pour cela que j'ai penser à la modification par référence en C, qui me parait très simple et peu coûteux.
Voir même au tuple en Python, mais cela reviendrait à créer une nouvelle classe Couple<Livre, Etagere> que je n'apprécie guerre.
Code :
- /* Par référence : */
- public Livre getLivre(int num, Etagere *etage){...} // N'existe pas en Java
- /* Tuple : */
- public (Livre, Etagere) getLivre(int num){...} // N'existe pas en Java (mdr)
|
Message édité par didibear le 04-01-2015 à 19:48:50