public class SetArtilleriesGeneric { private final Object[] _places; public int getCount() { return _places.length; } public SetArtilleriesGeneric(int count) { _places = new Object[count]; } public int insert(T artillery) { return insert(artillery, 0); } public int insert(T artillery, int position) { if (position < 0 || position >= getCount()) { return -1; } if (_places[position] == null) { _places[position] = artillery; return position; } int firstNull = -1; for (int i = position + 1; i < getCount(); i++) { if (_places[i] == null) { firstNull = i; break; } } if (firstNull == -1) { return -1; } System.arraycopy(_places, position, _places, position + 1, firstNull - position); _places[position] = artillery; return position; } @SuppressWarnings("unchecked") public T remove(int position) { if (position < 0 || position >= getCount()) { return null; } var result = _places[position]; _places[position] = null; return (T) result; } @SuppressWarnings("unchecked") public T get(int position) { if (position < 0 || position >= getCount()) { return null; } return (T) _places[position]; } }