ClassCastException при доступе к методам универсального члена класса - PullRequest
1 голос
/ 17 августа 2011

Я получаю ошибку времени выполнения Exception in thread "main" java.lang.ClassCastException: m.compiler.datatypes.Int cannot be cast to java.lang.Integer

Вот фрагменты кода:

public abstract class DataType<E> {
protected E value;
...
}

А вот класс Int:

public class Int extends DataType<Integer> {

@Override
public DataType<Integer> compare(DataType<Integer> other) {
    if(value > other.value) //here the exception is thrown
        return new Int(1);
    if (value < other.value)
        return new Int(-1);
    return new Int(0);
}

}

фактический звонок:

        if(lValue instanceof Int) {
            Int lInt = (Int) lValue;
            Int result = (Int) lInt.compare(rInt);

если я распечатаю значения внутри, сравните значения правильные, но даже если я проверю с помощью

other.value.getClass()

я получаю исключение. Компилятор не имеет ошибок и предупреждений.

1 Ответ

1 голос
/ 17 августа 2011

В какой-то момент вы должны назначить Int на value ... И об этом должно было быть предупреждение.Вы можете сделать value final?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...