Почему метод getClass вызывает ошибку приведения типа в универсальном коде?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему метод getClass вызывает ошибку приведения типа в универсальном коде?

Сообщение Anonymous »

В следующем коде:

Код: Выделить всё

public class Test {

public E test(){
E test = (E) BigDecimal.ONE;
return test;
}

public static void main(String[] args) {
Test test = new Test();
test.test();
test.test().getClass();
}
}
Метод test.test() не выдает ошибку, но test.test().getClass() выдает сообщение «класс java.math.BigDecimal не может быть приведен к классу Java. ошибка lang.String. Эта ошибка возникает во время выполнения, а не в среде IDE.
Я понимаю, что Java выполняет стирание типа во время компиляции, но я не понимаю, почему метод getClass() запускает тип. проблема с кастингом.
На мой взгляд, код после стирания типа выглядит следующим образом:

Код: Выделить всё

public class Test {

public Object test(){
Object test = (Object) BigDecimal.ONE;
return test;
}

public static void main(String[] args) {
Test test = new Test();
test.test();
test.test().getClass();
}
}
Итак, test.test() возвращает объект, который на самом деле является BigDecimal, но почему BigDecimal.getClass() выдает ошибку, выдает 'класс java.math.BigDecimal не может быть приведен к классу Java Ошибка .lang.String?

Подробнее здесь: https://stackoverflow.com/questions/788 ... neric-code
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»