Je veux créer un objet qui contiendra et renverra plusieurs objets de différents types.
Quelle est la meilleure approche pour cela ? Il semble qu'il y ait plusieurs façons de procéder, et je suis donc intéressé par les idées des autres.
Merci.
Je veux créer un objet qui contiendra et renverra plusieurs objets de différents types.
Quelle est la meilleure approche pour cela ? Il semble qu'il y ait plusieurs façons de procéder, et je suis donc intéressé par les idées des autres.
Merci.
Si vous souhaitez renvoyer tous les objets en même temps, à partir d'un seul appel de méthode, le mieux est d'encapsuler tous les objets dans une classe (éventuellement interne) et de renvoyer une instance de cette classe.
class Container {
public static class Container {
Type1 obj1;
Type2 obj2;
...
}
private Type1 obj1;
private Type2 obj2;
...
public Container getAllObjects() {
Container container = new Container();
container.obj1 = this.obj1;
...
return container;
}
}
(Techniquement, vous pouvez également renvoyer plusieurs objets dans un fichier de type Object[]
array, cependant je ne le recommande pas pour le manque de sécurité de type et les possibilités ouvertes de faire des erreurs de commande).
Si vous voulez retourner les objets un par un, à partir d'appels de méthodes distincts, les bons vieux getters sont vos amis :-)
class Container {
private Type1 obj1;
private Type2 obj2;
...
public Type1 getObject1() {
return obj1;
}
public Type2 getObject2() {
return obj2;
}
...
}
Faites une classe similaire à celle-ci :
class ReturnValue {
Type1 value1;
Type2 value2;
}
et renvoyer une instance de celui-ci à partir de votre méthode si vous savez quels types vous voulez renvoyer en permanence.
Si vous ne le savez pas, le seul moyen est de renvoyer un message de type Object[]
contenant vos valeurs.
Eh bien, il y a 3 façons que je vois pour vous :
-1) utiliser le fait que les variables passées sont passées par référence. De cette façon, vous pouvez modifier directement l'objet dans votre fonction et ne pas avoir à vous soucier des valeurs de retour.
-2) vous pouvez simplement créer un tableau d'objets :
Object[] returnTab = new Object[numberToStore];
(ce n'est pas très joli je trouve)
-3) créer un objet ReturnObjectContainer
public class container { public ObjectA a ; public ObjectB b ;
Arraylist list = new list() ;
... //ajoutez ce que vous voulez stocker }
Que voulez-vous dire par "retour" ? Pour autant que je comprenne les termes, les objets ne renvoient rien, ils sont tout simplement. Ils peuvent avoir des getters qui renvoient un objet bien sûr. Pourriez-vous me dire de quelles manières différentes vous parlez ?
Si je vous comprends bien, vous voulez simplement une classe (objet) avec plusieurs objets privés (variables) qui peuvent être définis et obtenus par le biais de fonctions (membres).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.