Comment initialiser une Liste<E> dans vide le constructeur de la classe?
Le code suivant n'est évidemment pas de travail parce que List<E>
est abstraite:
public class MyList {
private List<E> list;
public MyList() {
this.list = new List<E>();
}
}
Comment puis-je initialiser MyList
classe avec un constructeur vide si j'ai besoin de la list
variable à un LinkedList
ou un ArrayList
en fonction de mes besoins?
la liste n'est pas marqué comme final. A-t-elle être initialisée dans le ctor?
Oui, il doit être initialisé dans le constructeur.
Est un utilitaire usine de classe acceptable? D'après les commentaires, j'ai l'impression que vous voulez que la mise en œuvre de type configurable, et qui suggère une Usine utilisée par MyList.
Je ne sais pas vraiment savoir ce que va enquêter sur...
Peut-être vous avez besoin de clarifier CE que vous avez besoin et nous allons trouver la FAÇON de l'obtenir. Nous savons que vous avez besoin d'une liste. Mais pourquoi, parfois, vous avez besoin d'un Liés les uns et les autres un ArrayList? Si vous souhaitez ajouter un grand nombre d'éléments peut-être qu'un lien est ok et quand elle est terminée, vous voulez le transformer... Essayez de trouver le comportement réel de votre classe...
Oui, il doit être initialisé dans le constructeur.
Est un utilitaire usine de classe acceptable? D'après les commentaires, j'ai l'impression que vous voulez que la mise en œuvre de type configurable, et qui suggère une Usine utilisée par MyList.
Je ne sais pas vraiment savoir ce que va enquêter sur...
Peut-être vous avez besoin de clarifier CE que vous avez besoin et nous allons trouver la FAÇON de l'obtenir. Nous savons que vous avez besoin d'une liste. Mais pourquoi, parfois, vous avez besoin d'un Liés les uns et les autres un ArrayList? Si vous souhaitez ajouter un grand nombre d'éléments peut-être qu'un lien est ok et quand elle est terminée, vous voulez le transformer... Essayez de trouver le comportement réel de votre classe...
OriginalL'auteur Ricardo Amaral | 2010-05-21
Vous devez vous connecter pour publier un commentaire.
Il existe de meilleures alternatives pour ce que vous essayez d'atteindre:
OriginalL'auteur kgiannakakis
Je ne suis pas sûr de savoir si c'est ce que vous demandez...
myNeeds
à être passé comme argument dans le constructeur? À l'encontre de l'objectif de la "constructeur vide".Eh bien, sinon comment est l'objet va savoir quel type d'utilisation? Il aurait besoin d'être transmis au constructeur, ou être disponible par le biais de l'environnement (par exemple, certains classe singleton).
C'est exactement pourquoi j'ai posté la question sur SO...
OriginalL'auteur Thomas
Pourquoi ne pas utiliser un protégé (et éventuellement
abstract
méthode) comme:OriginalL'auteur Dirk
shouldThisBeAnArrayList
en quelque sorte...OriginalL'auteur Martin Tilsted
Vous devez déterminer ce que "vos besoins" sont par défaut dans le cas LinkedList ou ArrayList. Si vous ne pouvez pas dire, si le besoin s'en fonction des changements de quelque chose qui se passe sur l'objet de la durée de vie, puis la liste des besoins de changement, trop.
Puis le laisser nulle et de le créer à la demande, ou de faire sans le constructeur par défaut.
OriginalL'auteur Carl Manaster
Liste est une interface et en tant que tel, ne peut pas être construit. Uniquement des implémentations de ladite interface peut être construit (par exemple, liste de tableaux). Aussi, vous devez connaître le type (E) à la construction.
Cela devrait fonctionner:
Vous pouvez construire une LinkedList par défaut et avoir une méthode setListType qui serait de construire une nouvelle liste de tableaux et de copier des données à partir de LinkedList.
OriginalL'auteur Robert Kovačević
Je pense que vous pourriez faire ce qui suit:
LinkedList
au lieu d'unArrayList
?où voulez-vous configurer le type de liste? Par objet ou peut-être à certains de démarrage des propriétés de fichier?
J'ai besoin d'elle pour être par objet...
OriginalL'auteur El Guapo
Que je comprends, vous ne pouvez pas utiliser simplement un constructeur vide, parce que vous avez une décision nœud dans votre modèle, lorsque vous devez choisir entre le type de la liste, donc, vous devrez dire au programme de toute façon ce genre de liste sera.
Cela semble être la meilleure solution à mon avis:
OriginalL'auteur Rbacarin
C'est ce que j'utilise dans les classes.. j'ai une longue initialisé ce que j'ai pu lors de la définition de la variable privée elle-même.
OriginalL'auteur Ethode