#java #apache-commons #objectpool #apache-commons-pool
#java #apache-commons #objectpool #apache-commons-pool
Вопрос:
При использовании общего пула apache это может обеспечить мне хорошую реализацию пула объектов Java. Однако их интерфейс KeyedPoolableObjectFactory не является типобезопасным. Существует ли какая-либо библиотека пула объектов в Java, которая может предоставить нам универсальный интерфейс для создания пула объектов, безопасного для типов?
Комментарии:
1. Уверен, что вам действительно нужен пул объектов? В каком контексте вы собираетесь это использовать?
2. Для хранения списка информации о клиенте и списка прослушивателей тем AMQ. Надеюсь, запись клиента может быть удалена после простоя в течение определенного периода времени.
Ответ №1:
Пул Apache Commons версии 1.6 поддерживает универсальные
Ответ №2:
Насколько я знаю, нет, но достаточно легко создать типизированную оболочку вокруг реализации commons-pool, чтобы ваш вызывающий код мог использовать generics.
Комментарии:
1. Это не так просто. Например, следующее невозможно. общедоступный класс X<T> реализует GenericKeyedObjectPool { @Override public void ActivateObject(конечный объект arg0, конечный объект arg1) выдает исключение { if (arg0 instanceof T) …. => ошибка }
2. Или я могу использовать только это, но это не так хорошо для создания требуемого объекта. открытый класс X<T> реализует KeyedPoolableObjectFactory { тип частного класса<T>; открытый статический <T> X<T> create(тип класса<T>) { возвращает новый X<T> (тип); }
3. @raymond Почему artbristol имеет в виду, что вы можете создать класс, который содержит экземпляр
KeyedObjectPool
. Затем вы вольны определять свой собственный API, делегируя вызовы указанномуKeyedObjectPool
. Смотрите de.wikipedia.org/wiki/Adapter_(Entwurfsmuster) для получения более подробной информации о том, как это реализовать.4. Спасибо artbristol и вспомогательному методу. Похоже, что на данный момент у меня нет другого выбора, кроме как реализовать оболочку или адаптер для достижения этой цели. 🙂