Джава. Лучшая процедура для десериализации универсального объекта Java? - PullRequest
3 голосов
/ 11 июня 2010

Какова наилучшая процедура для хранения и извлечения, используя собственную сериализацию Java, универсальные объекты, такие как ArrayList<String>?

Редактировать: Для уточнения.Когда я сериализую объект типа ArrayList<String>, я бы хотел десериализовать объект того же типа.Тем не менее, я не знаю способа вернуть обратно к этому универсальному объекту без предупреждения.

Ответы [ 2 ]

5 голосов
/ 11 июня 2010

Я думаю Я понимаю вопрос, хотя его можно сформулировать менее смутно. Когда вы десериализуете, вы можете привести к ArrayList, и если вы не наберете ClassCastException, вы знаете, что вы правильно сделали эту часть; но если вы продолжите приводить к ArrayList<String> (или List<String>), вы получите предупреждение, что это небезопасно. Коллекция может содержать целые числа, и один этот бросок не поймет этого.

Обычный лучший способ действий - просто тщательно сопоставить ваш код сериализации и десериализации и подавить получаемые предупреждения.

1 голос
/ 11 июня 2010

Я думаю, что вы застрянете с небезопасными предупреждениями о приведении здесь - сериализация может иметь дело только с характеристиками объектов, которые в конечном итоге попадают в реальный байт-код, и (насколько я понимаю) дженерики удаляются компилятором , Внутренности механизма десериализации не имеют никакого понимания общих параметров.

...