Не могу получить элементы ArrayList после десериализации

 
 
 
Сообщения:8
Добрый день,вот нужно сериализавать, а потом десериализовать вот этот класс:
public class User implements Serializable {

    private String nickname;
    private ArrayList <String> userfiles=new ArrayList<>();

    public String getNickname(){
        return nickname;
    }

    public void setNickname(String nickname){
        this.nickname=nickname;
    }

    public void addFile(String filename){
        userfiles.add(filename);
    }

    public void printAllFiles(){
        for(int i=0;i<userfiles.size();i++){
            System.out.println(userfiles.get(i));
        }
    }

    public ArrayList getList(){
        return userfiles;
    }
}


После десериализации в ArrayList видится только первый элемент.В чем может быть проблема?
https://github.com/ullf/WebServer весь код программы.
Изменен:01 апр 2018 15:44
 
 
Сообщения:29
У меня всё работает, использовал такой код:


import java.io.*;
import java.util.ArrayList;
import java.util.Base64;

public class Test {

public static void main(String[] args) throws IOException, ClassNotFoundException {
User user = new User();
user.setNickname("nickname");
user.addFile("file1");
user.addFile("file2");
user.addFile("file3");

String object = toString(user);
User u = (User) fromString(object);
System.out.println(u);
}

/** Read the object from Base64 string. */
private static Object fromString( String s ) throws IOException ,
ClassNotFoundException {
byte [] data = Base64.getDecoder().decode( s );
ObjectInputStream ois = new ObjectInputStream(
new ByteArrayInputStream( data ) );
Object o = ois.readObject();
ois.close();
return o;
}

/** Write the object to a Base64 string. */
private static String toString( Serializable o ) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( o );
oos.close();
return Base64.getEncoder().encodeToString(baos.toByteArray());
}


public static class User implements Serializable {

private String nickname;
private ArrayList <String> userfiles=new ArrayList<>();

public String getNickname(){
return nickname;
}

public void setNickname(String nickname){
this.nickname=nickname;
}

public void addFile(String filename){
userfiles.add(filename);
}

public void printAllFiles(){
for(int i=0;i<userfiles.size();i++){
System.out.println(userfiles.get(i));
}
}

public ArrayList getList(){
return userfiles;
}
}
}
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет