Погружение в Java Generics Вопросы по Java Generics очень часто любят задавать на технических интервью. И, на мой взгляд, этой темой владеть очень важно не только для успешного прохождения собеседования, но в принципе для того, чтобы создавать более стабильный и понятный код. Итак, Generics впервые появились в Java 5 и стали в своё время прорывной фичей, благодаря которой работать с объектами Java Collection Framework стало гораздо проще и безопаснее потому, что использование “дженериков” предотвращает кучу ошибок, связанных с некорректной типизацией, ещё на этапе компиляции кода. Начну с того, что перепишу класс Quote (https:/...29) public class Quote {   private static Float price;   public void setPrice(Float price){    this.price = price;   }   public Float getPrice(){ return this.price; } } с использованием Generics public class Quote<T> {   private T t;   public void set(T t){    this.t = t;   }   public T get(){ return this.t; } } Код заметно изменился и на первый взгляд стал более запутанным. Первое, что бросается в глаза – это новая конструкция <T>. Она называется Diamond. Подобные конструкции стали применяться в Java 7 и применяются до сих пор. Но остаётся открытым вопрос – что такое T? И будет ли вообще работать этот код? В Generics предусмотрено шесть видов нотаций: E – Element (элемент); K – Key (ключ); V – Value (значение); N – Number (число); T – Type (тип); S,U,V и т.д. в случае, если в конструкторе требуется указать более одного типа. И, да, этот код будет работать. Ниже прилагаю класс для проверки. public class Main {   public static void main(String[] args) {    Quote<Float> quote = new Quote<>();    quote.set(99f);    System.out.println(quote.get());   } }
130 читали · 1 год назад
Java generics. То что спрашивают на собеседовании.
Дженерики спрашивают на собеседовании, поэтому предлагаю рассмотреть что это такое. В чем суть Дженериков: Под дженериками в Java подразумевают возможность добавлять к типам типы-параметры. Таким образом получаются сложные составные типы. Такой составной тип в общем случае выглядит так: ОсновнойТип <ТипПараметр> Пример: ArrayList<Integer> list = new ArrayList<Integer>(); В данном примере мы создаем список list, который будет хранить в себе параметры типа int. Если же мы создадим список без Дженериков, то в наш список можно будет сохранять параметры любых типов...