Java - избавиться от предупреждения компилятора? - PullRequest
2 голосов
/ 17 марта 2011

У меня есть следующая строка кода, которая отображает следующее предупреждение:

HashMap<String,String> currentItem = (HashMap<String,String>) adapter.getItemAtPosition(position);
// Warning: Type Safety: Unckecked cast from Object to HashMap <String,String>

Как мне избавиться от этого предупреждения?

Ответы [ 5 ]

4 голосов
/ 17 марта 2011

Пусть метод getItemAtPosition возвращает универсальный HashMap, так что вам не нужно его приводить.Либо так, либо используйте соответствующую аннотацию - @SuppressWarnings ("unchecked")

3 голосов
/ 17 марта 2011

Вы можете подавить его с помощью аннотации @SuppressWarnings("unchecked") в строке перед объявлением:

@SuppressWarnings("unchecked")
HashMap<String,String> currentItem = (HashMap<String,String>) adapter.getItemAtPosition(position);
// Warning: Type Safety: Unckecked cast from Object to HashMap <String,String>

Если вы сделаете это, вы должны добавить комментарий, указывающий, почему это безопасно для преобразования типа вкарта строк в строки.

В качестве альтернативы, если вы читаете только с карты, вы можете привести ее к HashMap<?, ?> и проверить тип объектов, которые вы получаете с карты, с помощью instanceof.

1 голос
/ 17 марта 2011

Вы можете отключить это предупреждение в настройках компилятора, см. Рисунок ..

enter image description here

1 голос
/ 17 марта 2011

Вы можете использовать аннотацию SuppressWarnings.

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/SuppressWarnings.html

Но я бы не советовал вам делать это, если у вас есть доступ к adapter и вы можете его реорганизовать, воспользоваться обобщениями Java и вернуть правильный тип.

0 голосов
/ 17 марта 2011

Если получатель возвращает Object из-за его универсальности, то вам следует убедиться, что он содержит строковые значения.

Вы можете использовать проверенную карту для исполнения договора, хотя:

Map<String, String> currentItem = Collections.checkedMap(
     adapter.itemAtPosition(position), String.class, String.class);

См. http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#checkedMap%28java.util.Map,%20java.lang.Class,%20java.lang.Class%29

...