По ряду причин, которые (верьте, хотите нет) не настолько несостоятельны, как вы думаете, мы все еще ( вздох ) используем Java 1.4 для сборки и запуска нашего кода (хотя мы планируем наконец-то перейдем на Java 7 к концу года).
Наш существующий код, который использует классы Collection
, не очень хорошо показывает, что ожидается в Collection
. Очевидно, что вы можете прочитать код и увидеть, что в итоге делают downcast, и сделать из этого вывод, но вы не можете просто посмотреть на объявление метода и узнать, что на самом деле является Collection
объектом, который является аргументом метода или методом, возвращающим значение держит.
В новом коде, который я пишу, и когда я нахожусь в более старом коде, который использует Collection
s, я добавляю встроенные комментарии к объявлениям Collections
, чтобы показать, что было бы объявлено, если бы генерики использовались используемый. Например:
Map/*<String, Set<Integer>>*/ theMap = new HashMap/*<String, Set<Integer>>*/();
или
List/*<Actions>*/ someMethod(List/*<Job>*/ jobs);
В соответствии с хмурым отношением к субъективности здесь, в SO, вместо того, чтобы спрашивать, что вы думаете об этом (хотя по общему признанию я хотел бы знать - я нахожу это немного уродливым, но все еще хотел бы иметь там информацию о типах) вместо этого просто спросите, что, если что-нибудь, вы делаете, чтобы прояснить, что удерживается префиксами Collection
объектов.