我听说Generics的Java实现不如C#实现。在语法上看起来相似,这是Java实现的次要标准,还是出于宗教目的?
streloksi的链接在消除差异方面做得很好。快速而肮脏的总结是…
在语法和用法方面。两种语言之间的语法大致相同。到处都是一些怪癖(最明显的是约束)。但是基本上,如果您可以阅读其中之一,则可能可以阅读/使用另一种。
虽然最大的区别在于实现上。
Java使用类型擦除的概念来实现泛型。简而言之,底层的编译类实际上不是通用的。他们编译为对象并强制转换。实际上,Java泛型是编译时的构件,可以在运行时轻松颠覆。
另一方面,借助CLR,C#可以实现泛型直至字节码。为了支持2.0中的泛型,CLR进行了几项重大更改。好处是性能提高,深度类型安全验证和反思。
再次,提供的链接有更深入的细分,我鼓励您阅读