Существует ли какая-либо универсальная версия общего пула объектов apache?

#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 поддерживает универсальные

http://commons.apache.org/pool/examples.html

Ответ №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 и вспомогательному методу. Похоже, что на данный момент у меня нет другого выбора, кроме как реализовать оболочку или адаптер для достижения этой цели. 🙂