<T>является универсальным и обычно может читаться как «типа T». Это зависит от типа слева от <>, что это на самом деле означает.
Я не знаю, что такое Poolили PoolFactoryявляется, но вы также упоминаете ArrayList<T>, что это стандартный класс Java, поэтому я поговорю об этом.
Обычно вы не увидите там буквы «Т», вы увидите другой тип. Так что, если вы видите, ArrayList<Integer>например, это означает «An ArrayListof Integers». Например, многие классы используют обобщения для ограничения типа элементов в контейнере. Другой пример HashMap<String, Integer>, который означает «карта с Stringключами и Integerзначениями».
Ваш пример пула немного отличается, потому что там вы определяете класс. Таким образом, в этом случае вы создаете класс, экземпляр которого может создать кто-то другой, с конкретным типом вместо T. Например, я мог бы создать объект типа, Pool<String>используя определение вашего класса. Это будет означать две вещи:
- My
Pool<String>может иметь интерфейс PoolFactory<String>с createObjectметодом, который возвращает Strings.
- Внутренне, он
Pool<String>будет содержать ArrayListстроки.
Это отличная новость, потому что в другое время я мог бы прийти и создать такой, Pool<Integer>который бы использовал тот же код, но имел Integerвезде , где вы видите Tв исходном коде.
T createObjectдолжно быть в бассейн или PoolFactory? Гдеthis.freeObjects = ...должен быть? Это отдельный пример? Это незаконно иметь там; это должно быть внутри метода.