我喜欢泛型差异中的讨论,并且想知道是否有任何语言特别好地使用了这个特性。
我真的不喜欢 Java 的一些可以 Liskov 替代的List<? extends Foo>
东西。为什么不能覆盖?List
Foo
List<Foo>
老实说,Comparable<? super Bar>
?
我也记不起为什么你永远不应该返回泛型数组:
public T[] getAll<T>() { ... }
我从不喜欢 C++ 中的模板,但这主要是因为没有一个编译器可以为它们吐出一个远程有意义的错误消息。有一次我实际上做了make realclean && make
17 次来编译一些东西;我从来没有弄清楚为什么第 17 次是魅力。
那么,谁真正喜欢在他们的宠物语言中使用泛型呢?