В Java, сырые типы — это обобщённые классы или интерфейсы, которые используются без указания типа параметра. Например, представим класс Box<T>
, который может хранить объект любого типа. Если мы создадим экземпляр Box
без указания типа параметра, например Box box = new Box();
, то Box
будет считаться сырым типом.
Многие специалисты рекомендуют избегать использования сырых типов в новом коде. Причина в том, что сырые типы обходят систему обобщений Java, а это означает, что компилятор Java не может выполнять проверки типов и автоматически преобразовывать типы. Это может привести к ошибкам во время выполнения.
Вернёмся к нашему классу Box<T>
. Если мы создадим экземпляр сырого типа Box
, мы сможем положить в него объект любого типа. Но когда мы попытаемся получить объект из Box
, мы не будем знать его тип, и нам придётся выполнить приведение типов. Если мы ошибёмся с типом, программа выдаст ошибку во время выполнения.
Box box = new Box(); box.put("a string"); // положили строку Integer i = (Integer) box.get(); // пытаемся получить строку как целое число
Вместо использования сырых типов лучше указывать конкретные типы параметров при создании экземпляров обобщённых классов. Так, компилятор сможет проверить типы и предупредить о возможных проблемах уже на этапе компиляции. Если мы создадим экземпляр Box<String>
, мы не сможем положить в него ничего, кроме строк, и при получении объекта из Box<String>
мы будем точно знать, что это строка.
Box<String> box = new Box<String>(); box.put("a string"); // положили строку String s = box.get(); // получили строку без приведения типов
Использование типов параметров делает код безопаснее и более понятным.
Добавить комментарий