Я не вижу, как я могу преобразовать Object
в ArrayList<Account>
, так как я сделал сериализацию и это тип ArrayList<Accounts>
. Как я вижу, этот код должен работать.Небезопасная брошенная проблема, Как отличить типы?
Текущий код десериализации:
ArrayList<Accounts> alst = new ArrayList<Accounts>();
try {
ObjectInputStream ain = new ObjectInputStream(new BufferedInputStream(new FileInputStream("accounts.ser")));
Object o = ain.readObject();
if(o instanceof ArrayList) {
alst = (ArrayList<Accounts>) o;
}
else {
System.out.println("Big problem!!!");
}
ain.close();
}
Я получаю эту проблему:
warning:
[unchecked] unchecked cast
required: ArrayList<Account>.
found: Object
Я прочитал так много сообщений об этой проблеме, но я просто не могу заставить его работать на моем вопрос. Я продолжал стучать по этой проблеме в течение нескольких дней и просто не повезло! Я знаю, что это проблема, которую я испытываю, когда файл де-сериализуется. Как мне вернуть его прежний тип из Object?
Есть ли другой способ?
Поместите ain.close в оператор finally или используйте Java 7: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – rethab
Вы не можете делать здесь литье типов. Компилятор не может знать, какой тип хранится в файле на диске, а литье в 'ArrayList >' было бы обременительным. Просто подавите предупреждение. – millimoose