Преобразование имени переменной в новый тип навсегда - PullRequest
1 голос
/ 04 февраля 2020

Я знаю, что это не очень хорошая идея по целому ряду причин , но если у меня есть что-то вроде:

Dog s = new ShihTzu();
s.beCute();

   Error: line 2 - cannot find symbol - method beCute()

((ShihTzu) s).beCute();

   It's adorable!

В том же объеме, что и Dog s, могу ли я повторно привести имя переменной s к типу ShihTzu?

Или это абсолютно невозможно? Если переменная определена для типа, то в ее текущей области ее невозможно изменить?

1 Ответ

3 голосов
/ 04 февраля 2020

Нет, это невозможно. Когда вы объявляете переменную определенного типа, она не может быть изменена.

Java spe c говорит :

Это ошибка времени компиляции, если имя формального параметра используется для объявления новой переменной в теле выражения метода, конструктора или лямбды, если только новая переменная не объявлена ​​в объявлении класса, содержащемся в методе, конструкторе или лямбда-выражение.

Ошибка времени компиляции, если имя локальной переменной v используется для объявления новой переменной в области действия v, если только новая переменная не объявлена ​​в классе, объявление которого находится в области действия v.

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