J'utilisais récemment ArrayList dans mon projet Android au bureau et je suis un peu confus entre List et ArrayList. Quelle est la différence entre les deux et que dois-je utiliser?
J'ai aussi vu des implémentations comme.
List<SomeObject> myList = new ArrayList<SomeObject>();
ArrayList<SomeObject> myList = new ArrayList<SomeObject>();
Quelle est la différence entre ces deux cas?
Il n'y a pas de différence entre les implémentations de liste dans vos deux exemples. Il y a cependant une différence dans la manière dont vous pouvez utiliser davantage la variable myList dans votre code.
Lorsque vous définissez votre liste comme:
List myList = new ArrayList();
vous ne pouvez appeler que des méthodes et des membres de référence définis dans l'interface List. Si vous le définissez comme:
ArrayList myList = new ArrayList();
vous pourrez invoquer des méthodes spécifiques à ArrayList et utiliser des membres spécifiques à ArrayList en plus de ceux dont les définitions sont héritées de List.
Néanmoins, lorsque vous appelez une méthode d'une interface de liste dans le premier exemple implémenté dans ArrayList, la méthode d'ArrayList sera appelée (car l'interface de liste n'implémente aucune méthode).
Cela s'appelle un polymorphisme. Vous pouvez lire à ce sujet.