java ArrayList contient différents objets
Est-il possible de créer
ArrayList<Object type car,Object type bus> list = new ArrayList<Object type car,Object type bus>()
;
Je veux dire ajouter des objets de différentes classes d'un arraylist?
Grâce.
Vous devez vous connecter pour publier un commentaire.
Oui, c'est possible:
La
vehicles
liste acceptera n'importe quel objet qui implémenteIVehicle
.Oui, vous pouvez. Mais vous avez besoin d'une classe commune pour vos types d'objet. Dans votre cas, ce serait
Vehicle
.Ainsi, par exemple:
Catégorie de véhicule:
De Bus de la classe:
Classe de voiture:
Classe principale:
Vehicle
classe appeléecreateVehicle
, qui va tenter d'analyser la chaîne d'entrée, et de créer un objet approprié. Par exemple, la fonction de recherche qui est le fabricant du véhicule - si c'estBMW
, alors c'est unCar
, dans d'autres cas, c'est unBus
.Car
. Et puis lors de la construction d'un objet, vous appeleznew Car(s[0],s[1],s[2],s[3],s[4])
, oùs[2]
est évidemment la marque de la voiture.null
pour les champs qui ne sont pas utilisés pour les différents fabricants. Ou vous pouvez même créerpublic static
méthodes pour chaque marque de voiture (que les constructeurs). Par exemple,public static Car createAudi(String id, String type, String gears, String colors) {return new Car(id,type,gears, colors, null, null)}
, où les deux derniers champs sont portes ane moteur (qui ne sont pas le savoir pour l'Audi).Comparator
.Obtenir l'utilisation de polymorphisme. Disons que vous avez un parent de la classe
Vehicle
pourBus
etCar
.Vous pouvez ajouter des objets de types
Bus
,Car
ouVehicle
à cette liste depuis le Bus EST-UN Véhicule, Voiture EST-UN Véhicule et EST-UN Véhicule.La récupération d'un objet à partir de la liste et d'exploitation en fonction de son type:
Vous ne pouvez pas spécifier plus d'un type de paramètre malheureusement, de sorte que vous aurez à trouver une super-classe commune pour vos types et l'utiliser. Un cas extrême serait juste à l'aide de
Object
:Faire attention à ce que vous aurez besoin de jeter le résultat pour le type spécifique que vous avez besoin si vous récupérez un point pour obtenir toutes les fonctionnalités, et pas seulement la commune):
Créer une classe et d'utiliser le polymorphisme. Et puis pour ramasser l'objet dans le clic, utiliser instanceof.