Zelf programmeer ik vaak in C#. Daarbij gebruik ik vaak generics. Nu moest ik laats ook iets doen in Java en daarbij vielen mij een aantal dingen op in de generic klassen van Java. Ik zal het even duidelijk maken aan de hand van een voorbeeld. Stel we nemen de volgende twee vergelijkbare interfaces:
.NET: System.Collections.Generic.ICollection<T>
Java: java.util.Collection<T>
Beide interfaces definieren een 'add' methode waarmee je een item van het type T kunt toevoegen aan de collection die de interface implementeert. Nu komt het vreemde. Toen ik de 'remove' en 'contains' methode bekeek zag ik op eens dat deze methoden in de .NET interface een item van type T als parameter heeft, maar dat er in Java de parameter gewoon een object o is.
Nu vraag ik me af waar deze verschillen vandaan komen. Wat is het nut om de 'remove' en 'contains' zo te definieren dat ze niet alleen iets van type T accepteren, maar alle mogelijke objecten, want dat lijkt me toch vreemd bij een collectie dat items van het type T bevat. Zijn er mensen die weten waar deze verschillen vandaan komen en waarom het zo gedaan is?
p.s. Ik hoop dat ik het bericht hier thuis hoort, want ik was aan het twijfelen of ik het nu hier of in Programming zou posten.
.NET: System.Collections.Generic.ICollection<T>
Java: java.util.Collection<T>
Beide interfaces definieren een 'add' methode waarmee je een item van het type T kunt toevoegen aan de collection die de interface implementeert. Nu komt het vreemde. Toen ik de 'remove' en 'contains' methode bekeek zag ik op eens dat deze methoden in de .NET interface een item van type T als parameter heeft, maar dat er in Java de parameter gewoon een object o is.
Nu vraag ik me af waar deze verschillen vandaan komen. Wat is het nut om de 'remove' en 'contains' zo te definieren dat ze niet alleen iets van type T accepteren, maar alle mogelijke objecten, want dat lijkt me toch vreemd bij een collectie dat items van het type T bevat. Zijn er mensen die weten waar deze verschillen vandaan komen en waarom het zo gedaan is?
p.s. Ik hoop dat ik het bericht hier thuis hoort, want ik was aan het twijfelen of ik het nu hier of in Programming zou posten.