Я использую рекурсивное дерево хеш-карт, в частности карту Hashmap, где Object является ссылкой на другой Hashmap и так далее. Это будет обойти рекурсивный алгоритм:
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 для обеспечения безопасности типа компиляции, и если я подавляю предупреждение, то оно побеждает цель.
Спасибо за ваши комментарии,
KSB