Dans .NET, le tableau et la liste ont Enumerable comme ancêtre, donc une méthode qui accepte Enumerable en tant qu'argument peut recevoir à la fois array et list comme argument. Je me demande s'il y a une chose similaire dans Java?Ancre commune à Java Tableau et liste
Répondre
Non, il n'y a pas d'équivalent en Java. Je suggère généralement que vous concevez des méthodes API pour recevoir List<T>
, Collection<T>
ou Iterable<T>
. Tandis que ceux-ci excluent directement en appelant la méthode avec un tableau, vous pouvez envelopper un tableau très facilement en utilisant Arrays.asList
. Cela est plus flexible pour l'appelant que de spécifier un tableau en tant que paramètre de méthode, ce qui force une implémentation unique. Je suis d'accord que ce n'est pas idéal cependant.
Notez que dans .NET, les tableaux unidimensionnels n'implémentent pas seulement IEnumerable<T>
- ils implémentent également IList<T>
.
Les deux dérivent de java.lang.Object
. Cependant, ce n'est pas lié à la collection, ce que je pense est ce que vous cherchez.
Array et List en Java ne partagent pas un ancêtre commun autre que java.lang.Object.
Les deux peuvent être consultées en utilisant la boucle foreach, comme ceci:
String [] array = new String [] { "foo", "bar", "baz", };
List<String> list = Arrays.asList("x", "y", "z");
for (String s : array)
System.out.println(s);
for (String s : list)
System.out.println(s);
Ils ne disposent pas d'un ancêtre commun, cependant, il existe des méthodes pour jeter entre les deux types selon les besoins -
Alors vous pourriez fournir une surcharge méthode de moulage en un type commun - c.-à-d.
public void doAll(MyType[] array) {
doAll(Arrays.asList(array));
}
public void doAll(List<MyType> list) {
//... process List here.
}
Fondamentalement, les tableaux ont un type implicite qui est une sous-classe d'objet. Voir Arrays dans le JLS:
public static void main(String[] args) {
int[] ia = new int[3];
System.out.println(ia.getClass());
System.out.println(ia.getClass().getSuperclass());
}
> class [I
> class java.lang.Object
Les listes et les tableaux sont traités est ainsi pas non plus la même chose quand on considère covariance/contravariance.
List<Object> l = new ArrayList<String>(); // complain
Object[] l2 = new String[1]; // ok
l2[0] = 4; // throw ArrayStoreException.
Cela devient encore pire si l'on considère les génériques, mais c'est un autre sujet. Dans l'ensemble, je ne connais pas la raison d'être de cette conception, mais nous devons vivre avec.
Iterable<T>
est l'équivalent Java de IEnumerable<T>
. Toutes/la plupart des collections implémentent cette interface (y compris ArrayList
et les tableaux), donc oui. Mais ce n'est pas un "ancêtre" (ce n'est pas non plus dans .NET), mais une interface commune.
- 1. ancre jquery détecter et préfixer
- 2. liste de tableau 2D en Java
- 3. Affectation d'une liste à un tableau dans Java
- 4. Java: La plus longue séquence commune
- 5. différence entre tableau et liste
- 6. liste HTML à un tableau
- 7. JQuery- Ajout d'attributs et params à une ancre
- 8. Trouver la chaîne la plus commune dans un tableau
- 9. PHP tableau à la liste
- 10. ancre et onclick avec asp.net postback
- 11. JAVA- Retour d'un tableau à
- 12. chaîne commune dans le tableau de chaînes (rubis)
- 13. Java entier à tableau d'octets
- 14. Java JSON/objet à tableau
- 15. Bibliothèque commune et l'espace de noms System.Configuration
- 16. Tableau chaîne et Arraylist/liste en C++
- 17. tableau java
- 18. Comment créer une ancre et rediriger vers cette ancre spécifique dans Ruby on Rails
- 19. Liste .Net à un tableau SOAP et retour à une liste .Net
- 20. Tableau PHP et liste de sélection
- 21. Java et définition d'une variable égale à un tableau
- 22. Prise de tableau à 2 dimensions et sortie d'un tableau à 1 dimension dans JAVA
- 23. Ancre UIButton à gauche d'un UILabel
- 24. JavaScript - Accédez à une ancre nommée
- 25. différence entre tableau et liste enveloppée?
- 26. ancre IE 6 bug
- 27. MonoRail rediriger vers # ancre
- 28. php ancre tag regex
- 29. Décoller tout après #ancre y compris le #ancre
- 30. image comme ancre dans codeigniter
Obtenir mes langues confus - été en train de lire C# récemment. – duffymo