Невозможно привести класс java .lang.Integer к классу java .lang.String - PullRequest
2 голосов
/ 23 января 2020

    public int compareTo(ListItem item) {
        if(item!=null) {
            return ((String) super.getValue()).compareTo((String) item.getValue());
        }

Моя программа основана на концепции абстрактного класса.

Как мне разрешить это java.lang.ClassCastException: в моей программе?

Ответы [ 2 ]

4 голосов
/ 23 января 2020

Приведение в Java магическим образом не преобразует данные из одного типа в другой. Скорее, он сообщает Java, что объект, хранящийся в переменной , на самом деле какого-то другого типа, что полезно при работе с наследованием или интерфейсами. См. этот вопрос StackOverflow для получения более подробной информации.

В этом случае значение, полученное из item.getValue(), является целым числом. Попытка привести к String не работает и не может работать, потому что это не String . Это действительно целое число, и попытка вызвать методы String для него не будет работать.

Как уже упоминалось, вы можете преобразовать Integer в строку, используя Integer.toString(someInteger). Однако, поскольку вы делаете сравнение, вам, вероятно, следует просто сравнить значения как целые числа.

2 голосов
/ 23 января 2020

Вам следует использовать такой метод, как parseInt()

Например:

int xInteger = Integer.parseInt(someString);

Причина, по которой вы получаете исключение, заключается в том, что между Целочисленный класс и класс String.

...