<T>
является универсальным и обычно может читаться как "типа T".Это зависит от типа слева от <>, что это на самом деле означает.
Я не знаю, что такое Pool
или PoolFactory
, но вы также упоминаете ArrayList<T>
, который являетсястандартный Java-класс, так что я поговорю об этом.
Обычно вы не увидите там буквы "T", вы увидите другой тип.Поэтому, если вы видите ArrayList<Integer>
, например, это означает «ArrayList
из Integer
s».Например, многие классы используют обобщенные элементы для ограничения типа элементов в контейнере.Другим примером является HashMap<String, Integer>
, что означает «карту с String
ключами и Integer
значениями».
Ваш пример пула немного отличается, потому что там вы определяете aучебный класс.Таким образом, в этом случае вы создаете класс, который кто-то другой может создать с конкретным типом вместо T. Например, я мог бы создать объект типа Pool<String>
, используя определение вашего класса.Это означало бы две вещи:
- My
Pool<String>
будет иметь интерфейс PoolFactory<String>
с методом createObject
, который возвращает String
s. - Внутренне,
Pool<String>
будет содержать ArrayList
строк.
Это отличная новость, потому что в другое время я могу прийти и создать Pool<Integer>
, который будет использовать тот же код, но иметь Integer
где бы вы ни увидели T
в источнике.