Мне понравилась дискуссия на Различия в обобщениях , и мне было интересно, есть ли языки, которые использовали эту функцию особенно хорошо.
Мне действительно не нравится List<? extends Foo>
в Java для List
вещей, которые можно заменить на Лисков Foo
. Почему List<Foo>
не может это покрыть?
И, честно говоря, Comparable<? super Bar>
?
Я также не могу вспомнить на всю жизнь, почему вы никогда не должны возвращать массив генериков:
public T[] getAll<T>() { ... }
Мне никогда не нравились шаблоны в C ++, но это было главным образом потому, что ни один из компиляторов никогда не мог выдать за них удаленно значимое сообщение об ошибке. Однажды я действительно make realclean && make
17 раз делал что-то для компиляции; Я так и не понял, почему 17-й раз был обаянием.
Итак, кому на самом деле нравится , использующим дженерики на родном языке?