Непроверенное преобразование Java - PullRequest
3 голосов
/ 15 марта 2011

У меня есть следующая строка кода

this.htmlSpecialChars = this.getSpecialCharMap();

, где

private HashMap<String,String> htmlSpecialChars;

но я получаю предупреждение о непроверенной конверсии. Как мне остановить это предупреждение?

Ответы [ 5 ]

6 голосов
/ 15 марта 2011

Вы получаете это, потому что getSpecialCharMap () возвращает объект, тип которого не может быть проверен компилятором как HashMap . Идите вперед и предоставьте прототип для getSpecialCharMap.

2 голосов
/ 15 марта 2011

Вы получаете предупреждение, потому что компилятор не может проверить, что присвоение htmlSpecialChars является HashMap, поскольку метод getSpecialChars () возвращает простой, неуниверсальный HashMap.

Вы должны изменить свой метод так, чтобы он возвращал определенный универсальный тип:

private HashMap<String,String> getSpecialCharMap() {
    return new HashMap<String,String>();
    }
0 голосов
/ 15 марта 2011

Является ли тип возвращаемого значения getSpecialCharMap() неуниверсальным HashMap? Непроверенное предупреждение о преобразовании обычно возникает из-за Типа Erasure в Generics . Чтобы обойти это, вам нужно аннотировать метод с помощью @SuppressWarnings("unchecked") или изменить тип возвращаемого значения getSpecialCharMap() на HashMap<String, String>.

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

Лучшим способом будет изменить тип возврата вашего метода на тип numberMap или иным образом - , обратите внимание, это действительно плохая практика .Никому не говорите, что я показал вам это:

Пример с предупреждением о непроверенной конверсии:

private static HashMap getSpecialCharMap() {
    return new HashMap();
}

public static void main(String[] args) {        
    HashMap<String,String> numberMap = getSpecialCharMap(); //warning
}

Пример без предупреждения:

...
@SuppressWarnings("unchecked")
public static void main(String[] args) {
    @SuppressWarnings("unused")
    HashMap<String,String> numberMap = getSpecialCharMap();
}
0 голосов
/ 15 марта 2011

Перед строкой введите:

@SuppressWarnings("unchecked")

Это отключит предупреждение компилятора.

...