blob: f4e5c536496301650c18f09ddb9cfbeb0b54a15c [file] [log] [blame]
/** @noinspection UnusedDeclaration*/
class LimitedPool<T> {
private int capacity;
private final ObjectFactory<T> factory;
private Object[] storage;
private int index = 0;
public LimitedPool(final int capacity, ObjectFactory<T> factory) {
this.capacity = capacity;
this.factory = factory;
storage = new Object[capacity];
}
interface ObjectFactory<T> {
T create();
void cleanup(T t);
}
public T alloc() {
if (index >= capacity) return factory.create();
if (storage[index] == null) {
storage[index] = factory.create();
}
<error descr="Incompatible types. Found: 'java.lang.Object[]', required: 'T'">return storage;</error>
}
}