Java 数组列表中的对象在加载后也是类似的。为什么?

Java 数组列表中的对象在加载后也是类似的。为什么?,java,arraylist,inputstream,objectinputstream,Java,Arraylist,Inputstream,Objectinputstream,我的程序是一个简单的聊天室。价值观​​由用户通过注册部分的文本字段写入,并创建帐户。我有一个名为“Account”的类,它采用相同的值​​在输入中,它包含相同的字段。所有帐户都需要保存和加载,以便以后执行。 我使用了下面的代码(这是程序代码的一部分),但有一个问题。我打印了这些值​​加载后,发现它报告的是空值。然后在向数组添加新帐户后,列出所有值​​在列表中被更改为附加值。例如,我创建并保存了一个名为“a”的帐户和电子邮件“a”,然后再次运行该程序。 在此处添加名为“B”且电子邮件为“B”的帐户

我的程序是一个简单的聊天室。价值观​​由用户通过注册部分的文本字段写入,并创建帐户。我有一个名为“Account”的类,它采用相同的值​​在输入中,它包含相同的字段。所有帐户都需要保存和加载,以便以后执行。 我使用了下面的代码(这是程序代码的一部分),但有一个问题。我打印了这些值​​加载后,发现它报告的是空值。然后在向数组添加新帐户后,列出所有值​​在列表中被更改为附加值。例如,我创建并保存了一个名为“a”的帐户和电子邮件“a”,然后再次运行该程序。 在此处添加名为“B”且电子邮件为“B”的帐户将打印两个帐户B。问题是什么

String email= t4.getText();
String password=t5.getText();
String name=t1.getText();
String family=t2.getText();
String phoneNumber=t3.getText();
try {
    FileInputStream f = new FileInputStream("accounts.txt");
    ObjectInputStream obj = new ObjectInputStream(f);
    int size=obj.readInt();
    for (int i = 0; i <size ; i++) {
        accounts.add((Account)obj.readObject());
    }
} catch (Exception e){
    e.printStackTrace();
}
for (int i = 0; i <accounts.size() ; i++) {
    System.out.println(accounts.get(i).name+"  "+accounts.get(i).email);
}
Account account = new Account(name,family,phoneNumber,email,password);
accounts.add(account);
try{
    FileOutputStream f=new FileOutputStream("accounts.txt",false);
    ObjectOutputStream obj=new ObjectOutputStream(f);
    obj.writeInt(accounts.size());
    for (Account a:accounts) {
        obj.writeObject(a);
    }
} catch (Exception e){
     e.printStackTrace();
}
for (int i = 0; i <accounts.size() ; i++) {
    System.out.println(accounts.get(i).name+"  "+accounts.get(i).email);
}
//class account
class Account implements Serializable {
    static String name, family, phoneNumber, email, password;
    static ArrayList<Post> posts = new ArrayList();
    static ArrayList<Account> following = new ArrayList();
    static ArrayList<Account> follower = new ArrayList();

    Account(String n, String f, String pn, String e, String ps) {
        name = n;
        family = f;
        phoneNumber = pn;
        email = e;
        password = ps;
    }

    void follow(Account user) {
        following.add(user);
        user.follower.add(this);
    }

    void post(String data) {
        Post post = new Post(data, new Date(), this);
        posts.add(post);
        for (Account account : follower) {
            account.posts.add(post);
        }
    }
}
String email=t4.getText();
字符串密码=t5.getText();
字符串名称=t1.getText();
String family=t2.getText();
字符串phoneNumber=t3.getText();
试一试{
FileInputStream f=新的FileInputStream(“accounts.txt”);
ObjectInputStream obj=新的ObjectInputStream(f);
int size=obj.readInt();

对于(int i=0;iAccount
类的所有成员都是
静态的
,这意味着他们属于类,而不是特定的实例。让他们成为非静态的,你就可以走了。

我怀疑Account类中的某些内容是静态的。但是,这两个建议都将继续是g在你用a(添加你的帐户类!)重新表述你的问题之前,还需要添加创建帐户的部分