Программирование на Java

         

Преобразование ссылочных типов (расширение и сужение) - часть 3


Parent p=new Child(); Child c=(Child)p; // преобразование будет успешным. Parent p2=new Child2(); Child c2=(Child)p2; // во время исполнения возникнет ошибка!

Чтобы проверить, возможен ли желаемый переход, можно воспользоваться оператором instanceof:

Parent p=new Child(); if (p instanceof Child) { Child c = (Child)p; } Parent p2=new Child2(); if (p2 instanceof Child) { Child c = (Child)p2; } Parent p3=new Parent(); if (p3 instanceof Child) { Child c = (Child)p3; }

В данном примере ошибок не возникнет. Первое преобразование возможно, и оно будет осуществлено. Во втором и третьем случаях условия операторов if не сработают и попыток некорректного перехода не будет.

На данный момент можно назвать лишь одно сужающее преобразование:

  • от класса A к классу B, если B наследуется от A (важным частным случаем является сужение типа Object до любого другого ссылочного типа).

С изучением остальных ссылочных типов (интерфейсов и массивов) этот список будет расширяться.




Содержание  Назад  Вперед