Ответ 1
В идеале, начните использовать генерики полностью. Вы не показали тип map
, но в идеале вы должны написать что-то вроде:
Set<String> keys = map.keySet();
SortedSet<String> s = new TreeSet<String>(keys);
Это было бы в случае, когда map
было чем-то вроде Map<String, Integer>
.
Если map
сам является сырым типом, это сложнее - опять же, лучшим решением было бы начать добавление генериков по всей вашей базе кода, избавление от необработанных типов. Это не всегда возможно, если карта возвращается из кода третьей стороны, конечно. В этом случае вам может потребоваться подавить предупреждения на одной строке при преобразовании из необработанных типов в общие типы - возможно, через Collections.checkedCollection
, но после этого вы должны иметь возможность работать с общим типом "правильно". Например:
@SuppressWarnings("unchecked") // Just for this one statement
Collection<String> keys = Collections.checkedCollection(map.keySet(),
String.class);
// Now this statement is fully generic with no warnings
SortedSet<String> s = new TreeSet<String>(keys);