Я использую рекурсивное дерево хэш-карт, в частности карту хэш-карты, где объект является ссылкой на другую хэш-карту и так далее. Это будет передано по рекурсивному алгоритму:
foo(String filename, Hashmap<String, Object> map)
{
//some stuff here
for (Entry<String, Object> entry : map.entrySet())
{
//type warning that must be suppressed
foo(entry.getKey(), (HashMap<String, Object>)entry.getValue());
}
}
Я точно знаю, что Object
относится к типу Hashmap<String, Object>
, но меня раздражает, что мне приходится подавлять предупреждение, используя @SuppressWarnings("unchecked")
.
Меня устроит решение, которое выполняет либо assert(/*entry.getValue() is of type HashMap<String, Object>*/)
, либо выдает исключение, если это не так. Я пошел по маршруту Generics для безопасности типов компиляции, и если я подавляю предупреждение, то это побеждает цель.
Спасибо за ваши комментарии, ксб