Java вызывает String.valueOf (данные char []) вместо String.valueOf (int i) для параметра Integer и создает исключение ClassCastException - PullRequest
0 голосов
/ 21 января 2019

У меня проблема с вызовом метода String.valueOf. В качестве аргумента я передал универсальный метод, который возвращает тип Integer. И тогда возникает исключение, потому что программа пытается привести приведенное Integer к char [], чтобы вызвать метод String.valueOf. Как я знаю, в String перегружен метод valueOf (), и один из них может принимать параметр Integer.

Ниже приведен скриншот оценки выражения Eclipse, на котором показана ситуация.

Evaluated expression

Эта строка вызывает ClassCastException

String quality = String.valueOf(model.get(property));

Вот что вызывает model.get (свойство):

public <X> X get(String property) {
        X value = null;
        try {
            if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
                return (X) NestedModelUtil.getNestedValue(this, property);
            }
            if (map != null) {
                Object objValue = map.get(property);
                if (objValue != null)
                    value = (X) objValue;
            }
        } catch (Exception e) {
        }
        return map == null ? null : value;
    }

EDIT:

Я добавил это условие, и компилятор идет внутри оператора if

if(model.get(property) instanceof Integer)
{
    quality = String.valueOf(model.get(property));
}

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Вам следует попробовать метод Integer.toString, если вы знаете, что возвращаемый тип имеет тип Integer.

0 голосов
/ 21 января 2019

Как компилятор должен вывести правильный X, как вы это называете?

Разделить его на

YourType qualityRaw = model.get(property);
String quality = String.valueOf(qualityRaw);
...