Мне интересно, можно ли де-сериализовать общий тип в экземпляр этого типа. Если это возможно, делает ли Java учтено де-десериализацию универсального типа (если таковая имеется)?Де-сериализация общего типа (но Serializable)
В моем случае, я пытаюсь реализовать список, который подкрепленная файл, который содержит последовательную форму элементов, и необходимо создать экземпляр универсального типа от байта [], например:
class FileBackedList<V extends Serializable> implements List<V> {
// ...
public V get(int index) {
byte[] value = readFromFile(index);
// ???????
// I'm pretty certain this doesn't work
return (V)(new ObjectInputStream(new ByteArrayInputStream(value)).readObject());
}
private byte[] readFromFile(int index) {
// read bytes at line 'index'
}
}
Есть ли способ, которым это может работать?
Редактировать: И если он действительно работает, я определенно буду ссылаться на правильный readObject (ObjectInputStream in) для типа V, если он имеет пользовательский?
Кстати, я не хочу сериализовать весь список.
Вы пробовали? – skaffman
Просто исправьте ошибки компиляции (либо реализуйте «Список», либо расширьте «ArrayList», а также «ByteArrayInputStream» не имеет метода readObject() »и попробуйте сами. – BalusC
skaffman: Нет, поскольку у меня нет файла с сериализованной формой. Даже если это сработает, я хочу знать, будет ли использоваться readObject() по умолчанию, или будет вызван readObject V (общий тип), если он определил пользовательский (теперь отредактирован вопрос, чтобы уточнить). BalusC: Исправлено то опечатки теперь реализует List и добавляет отсутствующую скобку, поэтому вызывается OIS.readObject(). – AshirusNW