Если у вас есть два различных класса А и В, и В является подклассом А, вы не можете отбрасывать следующим образом:пользовательского объекта литья Метод
A a = new A();
B b = new B();
A newA = (A)b;
Есть ли способ, чтобы включить код выше, чтобы работать (никаких изменений в вышеуказанный код) без JVM, бросающего ClassCastException?
------------ EDIT ----------
К сожалению, я сделал ошибку в коде на приведенный выше вопрос. Правильный вариант ниже:
A a = new A();
B b = new B();
B newB = (B)a;
'class B расширяет A {}', правильно? Должен работать даже без приведения. –
В любой ситуации, в которой вызывается объект типа 'A', объект типа' B' является жизнеспособным заменителем, без необходимости кастинга. –
@OliCharlesworth Это может сделать смысл в контексте, что dscer работает ... это просто простой пример –