Java 1.4 — приведение типа массива
Есть некий стек-аккумулятор, который принимает объекты и отдаёт их массивом:
interface Stack { void push(Object o); Object[] pop(int limit); }
Я храню в Stack-е объекты класса FooItem.
С помещением объектов в хранилище проблем нет. Но с выемкой возникают вопросы. Если бы Stack возвращал объекты по одному, то их можно было бы просто кастовать. Но массив приходится копировать:
class FooStore { Stack stack; void push(FooItem item) { stack.push(item); } FooItem[] pop(int limit) { Object[] raw = stack.pop(limit); FooItem[] result = new FooItem[raw.length]; System.arraycopy(raw, 0, result, 0, raw.length); return result; } }
Мне эта затея с копированием кажется неправильной. Есть ли более красивый путь изменения типа компонентов массива? Или лучше вообще не заморачиваться и отдавать Object[], а в комментарии сказать, что он хранит FooItem-ы? Или, может быть, я вообще хочу неправильного? Не соображу, как об этом погуглить.
