Приведение типов

Приведение типов в Java включает в себя два основных типа операций: расширение (widening) и сужение (narrowing).

  1. Расширение (Widening):

    Расширение происходит, когда значение переменной приводится к типу данных, который может хранить больше значений. Это безопасное преобразование, так как нет потери данных. В Java расширение выполняется автоматически, если целевой тип данных имеет больший размер, чем исходный.

    Пример расширения для примитивных типов данных:

    int x = 10;
    long y = x; // Расширение типа int до long

    Пример расширения для объектов:

    class Animal {}
    class Dog extends Animal {}
    
    Dog dog = new Dog();
    Animal animal = dog; // Расширение типа Dog до Animal
  2. Сужение (Narrowing):

    Сужение происходит, когда значение переменной приводится к типу данных, который может хранить меньше значений. Это потенциально опасное преобразование, так как может привести к потере данных или исключениям. В Java сужение требует явного указания приведения типов.

    Пример сужения для примитивных типов данных:

    double a = 10.5;
    int b = (int) a; // Сужение типа double до int

    Пример сужения для объектов:

    class Animal {}
    class Dog extends Animal {}
    class Cat extends Animal {}
    
    Animal animal = new Dog();
    Dog dog = (Dog) animal; // Явное сужение типа Animal до Dog

    Важно помнить, что при сужении типов возможна потеря данных или исключения времени выполнения (ClassCastException), поэтому необходимо быть осторожным при использовании сужения. Во избежание ошибок желательно предварительно проверять тип объекта с помощью оператора instanceof.

Last updated