11
votes

Java Liste des objets qui mettent tous l'implémentation d'une interface


1 commentaires

Voulez-vous dire IA? Quand vous dites IB?


6 Réponses :


1
votes

Eh bien, vous pouvez le déclarer une liste .

Pour en tirer plus loin, la liste peut stocker des objets qui implémentent l'IA. La prise est que, lorsque vous les récupérez, vous ne connaissez pas la classe d'origine sans effectuer un .getclass () dessus.

Exemple: < Pré> xxx


0 commentaires

20
votes

Utiliser s'étend : xxx

plus d'informations peut être trouvé sur Les tutoriels Java qui ont un Leçon complète sur les génériques .

en particulier, le section sur wildcards explique comment utiliser le ? avec Super et étend à Spécifiez un paramètre pour être une superclasse ou une sous-classe d'une classe donnée.


1 commentaires

Je recommande également la session de Joshua Bloch de Javaone cette année pour plus d'informations. Vraiment effacé pour moi: développeurs.sun.com.com / Apprendre / JavaoneOnline / Sessions / 2009 / PDF / ...



7
votes

Qu'en est-il de: xxx


0 commentaires

2
votes

Vous pouvez le faire avec étend : xxx


0 commentaires

3
votes

Si vous vouliez dire que la classe A est implémente IA, plutôt que IB, votre code devrait alors que votre code devrait bien dire xxx

depuis tout, par définition IAS.

Pendant ce temps, il n'y a pas de caractères génériques pour . Il y a et c peut être une interface ou une classe; Cependant, ce n'est pas nécessaire pour ce que vous semblez essayer de faire.

Si vous voulez dire expressément pour (ia item: liste) parce que vous ne garantissez pas que les éléments de cette liste sont a s, mais garantissent qu'ils sont ia s, puis je pense que vous avez un léger problème (je ne peux pas dire avec certitude, car Vous n'avez pas dit où se trouve ce code de traitement de la liste). Une liste list est pas a par définition; Si vous construisez une liste list puis le transmettez à une méthode qui s'attend à une liste , vous obtiendrez une erreur de la compilation. Vous pouvez cependant créer une liste et le remplir avec a s. La raison de cela est expliquée dans le tutoriel de Java sur les génériques.



0
votes

Une alternative qui n'a pas besoin d'utiliser la liste Étend IB> Liste CODE>

public class A implements IB{

}

List<A> listOfConcreteClassA = new ArrayList<A>();

// convert to interface
List<IB> listOfInterfaceB = new ArrayList<IB>(listOfConcreteClassA)


0 commentaires