Quali sono le differenze delle implementazioni C# e Java della classe List generica?C# vs Java - Elenchi generici
risposta
Stai chiedendo differenze nella loro API o nella loro implementazione sottostante? Credo che i generici Java siano implementati completamente tramite il compilatore - la JVM non ha nozioni di generici. Per C#, i generici sono un concetto integrato del runtime .Net. Wikipedia sembra avere un buon confronto tra i due: http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java#Generics
Ebbene, in Java List<T>
è un'interfaccia, per iniziare con :)
La differenza più importante tra i due è la differenza tra C# e Java generici a Iniziamo con: in Java i generici eseguono fondamentalmente controlli in fase di compilazione e includono alcuni metadati in campi generici, ecc. ma l'oggetto non conosce il suo tipo generico al momento dell'esecuzione. Non puoi chiedere a List<?>
cosa? è, in altre parole. Qualsiasi riferimento a un parametro di tipo generico nell'atto di implementazione è Object
, in pratica, quindi uno ArayList<String>
è supportato da uno Object[]
. In C# tutte le informazioni sono disponibili anche al momento dell'esecuzione - quindi un List<string>
è supportato da un string[]
.
Analogamente i generici C# consentono argomenti tipo tipo valore, quindi è possibile avere uno List<int>
in C# ma non in Java.
Ci sono ulteriori differenze in termini di varianza ecc., Ma questo si sta spostando molto lontano da List<T>
.
In termini di soloArrayList<T>
(Java) e List<T>
(NET), un paio di differenze:
- Java elenca Override è uguale a/hashCode, mentre non lo fanno in .NET
ArrayList<T>
cresce moltiplicando la capacità corrente di 3/2; di .NETList<T>
raddoppia la capacità corrente invece
Naturalmente ci sono altre differenze in termini di API esposte - se potesse dare maggiori informazioni sul tipo di differenza che ti interessa, potremmo aiutare di più.
E mi ricordo di aver chiesto perché otterresti sempre upvotes @ meta. Bella risposta. –
Ma l'elenco C#
- 1. Generici Java
- 2. Java - Estendere HashMap - Oggetto vs. generici comportamento
- 3. parametri vs. farmaci generici
- 4. Generici Java: più parametri generici?
- 5. ereditarietà di interfacce con elenchi generici
- 6. .NET: combinazione di due elenchi generici
- 7. Sovraccarico vs argomenti generici
- 8. Campi generici Java
- 9. Interfaccia generica Java vs Metodi generici e quando utilizzare uno
- 10. Come eseguire il cast di tipi di elenchi generici in java?
- 11. generici Java: mancata corrispondenza Bound
- 12. Generici di Java: caratteri jolly
- 13. polimorfismo C# in tipi generici
- 14. confronto di elenchi Scala con elenchi Java
- 15. Generici Java: ottieni lezione?
- 16. Generici Java + Pattern builder
- 17. Invocazione Java metodi generici
- 18. Java - Metodi statici generici
- 19. generici Java e Serializable
- 20. java generici costruttori
- 21. Bug generici Java?
- 22. generici Java - tipo dedurre
- 23. Java Play2 - Modelli generici?
- 24. C# Union vs Contiene per gli elenchi di dati continui
- 25. Java vs C++ passare riferimento
- 26. Default Constructor, Java vs C++
- 27. C# readonly vs Java final
- 28. C# sealed vs Java finale
- 29. pacchetto Java vs C# assemblee
- 30. Java eredità vs C# eredità
Bene, per esempio, List (http://java.sun.com/javase/7/docs/api/java/util/List.html) è un'interfaccia in Java, non una classe. L'equivalente di Java alla classe List generica C# è ArrayList –
sebbene un po 'datato, sembra interessante: http://www.artima.com/intv/generics.html – Zaki