Почему декларация
Set<Set<String>> var = new HashSet<Set<String>>();
работает, но декларация
Set<Set<String>> var = new HashSet<HashSet<String>>();
Дроссель?
Я знаю, что "верхний уровень" (не уверен, что эта правильная фраза здесь) генерики в декларации играют по разным правилам, чем те, что находятся внутри заостренных скобок, но мне интересно узнать причину. Нелегкий вопрос для Google, поэтому я подумал, что попробую вас, ребята.