Création d'une liste d'instances d'objets différents
Je suis tring pour créer une liste de tableaux de différentes instances de classe. Comment puis-je créer une liste sans la définition d'un type de classe? (<Employee>)
List<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee());
Employee employee = employees.get(0);
source d'informationauteur mypolat
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une liste d'Objet comme
List<Object> list = new ArrayList<Object>()
. Comme toutes les classes de la mise en œuvre s'étend implicite ou explicite dejava.lang.Object
classe, cette liste peut contenir n'importe quel objet, y compris les instances deEmployee
Integer
String
etc.Lorsque vous récupérez un élément de cette liste, vous pourrez récupérer un
Object
et non plus unEmployee
ce qui signifie que vous devez effectuer un cast explicite dans ce cas comme suit:objects
liste acceptera n'importeObject
Vous pouvez concevoir comme suit
et dans la liste
List anyObject = new ArrayList();
or
List<Object> anyObject = new ArrayList<Object>();
maintenant
anyObject
peut contenirobjects of any type
.utilisation instanceof savoir
what kind of object it is
.Je crois que votre meilleur coup est de déclarer la liste comme une liste d'objets:
Ensuite, vous pouvez mettre ce que vous voulez, comme:
De toute évidence, vous ne serez pas en mesure de lire tout ce qui sort de la liste sans un bon casting:
Je ne conseille pas l'utilisation de matières premières des types comme:
Vu que le but de génériques est précisément pour éviter, à l'avenir de Java peut ne plus suport raw types, le raw types sont considérés comme héritage et une fois que vous utilisez une crue de type que vous n'êtes pas autorisé à utiliser des génériques à tous dans une référence donnée. Par exemple, prendre un coup d'oeil a cette autre question: Combinant Raw Types et Méthodes Génériques
Si je suis en train de lire ceci correctement, vous voulez juste pour éviter d'avoir à spécifier le type, correct?
Dans Java 7, vous pouvez le faire
mais que toutes les autres solutions de rechange en cours de discussion allez juste pour le sacrifice de sécurité de type.
Si vous ne pouvez pas être plus précis que
Object
avec votre cas, alors utiliser:Sinon, soyez aussi précis que vous le pouvez: