2016-10-20 1 views
1

Я хочу прочитать Collections.synchronizedList(ArrayList<>()) из файла, в котором я сохранил этот список раньше (это возможно?). И я получаю эту ошибку:Его можно отличить Collections.synchronizedList() от объекта, считанного из файла?

Exception in thread "main" java.lang.ClassCastException: java.util.Collections$SynchronizedRandomAccessList cannot be cast to java.util.ArrayList 
    at RMIServerImpl.loadAuctions(RMIServerImpl.java:247) 
    at RMIServerImpl.rmiStart(RMIServerImpl.java:293) 
    at RMIServerImpl.main(RMIServerImpl.java:323) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 

Мой код:

private List<User> users; 

public RMIServerImpl() throws java.rmi.RemoteException{ 
    super(); 
    auctions = Collections.synchronizedList(new ArrayList<>()); 
} 
public void saveAuctions(){ 
    ObjectFile file = new ObjectFile(); 
    try { 
     file.openWrite("auctions"); 
    } catch (IOException e) { 
     System.out.println("Problem opening auctions file(WRITE MODE)."); 
    } 
    try { 
     file.writeObject(this.auctions); 
    } catch (IOException e) { 
     System.out.println("Problem saving auctions"); 
    } 
    try { 
     file.closeWrite(); 
    } catch (IOException e) { 
     System.out.println("Problem close auctions file(WRITE MODE)."); 
    } 
} 
public void loadAuctions(){ 
    ObjectFile file = new ObjectFile(); 
    try { 
     file.openRead("auctions"); 
    } catch (IOException e) { 
     System.out.println("Problem opening auctions file(READ MODE)(No auctions found)"); 
    } 

    try { 
     this.auctions= (ArrayList<Auction>) file.readObject();//PROBLEM OCCURS HERE 
    } catch (IOException | ClassNotFoundException e) { 
     System.out.println("Problem loading auctions"); 
    } 

    try { 
     file.closeRead(); 
    } catch (IOException e) { 
     System.out.println("Problem closing auctions file(READ MODE)"); 
    } 
} 
+1

'Collections.synchronizedList' не возвращает ArrayList, он возвращает список, который может его обернуть, но он не является самим ArrayList и не расширяет его. – Pshemo

+0

Как ваш файл, который вы читаете? – Gatusko

+0

Это объектный файл, в котором я сохраняю список аукционов. –

ответ

0

литье его (список) вместо (ArrayList) решил ее

 Смежные вопросы

  • Нет связанных вопросов^_^