我正在编写一个非常简单的程序 GUI 程序来模拟手机。“手机”有四个主要按钮:电话、联系人、消息和应用程序。我已经编写了所有的 GUI 代码并在处理 Contact 类时遇到了问题,这是整个程序的支柱!
Contact 类非常简单,它有两个 String 类型的实例变量,分别是“name”和“number”。我想构建一个 Contact 类型的 ArrayList,允许添加联系人,然后创建方法以附加到序列化文件并从中读取。
在这一点上,我非常坚持如何创建将对象添加到 arrayList 的方法,然后创建附加到序列化文件并从序列化文件中读取的方法。
这是联系人类:
public class Contact
{
public String name, number;
Contact()
{}
Contact (String theName, String theNumber)
{
this.name = theName;
this.number = theNumber;
}
public void setName(String aName)
{
this.name = aName;
}
public void setNumber(String aNumber)
{
this.number =aNumber;
}
public String getName()
{
return name;
}
public String getNumber()
{
return number;
}
public String toString()
{
return name + ": " + number;
}
public boolean equals(Contact other)
{
if (name.equals(other.getName()) && number.equals(other.getNumber()))
{
return( true );
}
else
{
return( false );
}
}
}
感谢您的快速回复。我已经更正了 equals 方法并将 ArrayList 移到了它自己的类中。我还清除了 read 方法的错误(Java 7 问题)。我遇到的当前问题是在这些方面:
out.writeObject(contact);
和
Contact contact = (Contact)in.readObject();
由于我正在尝试写入和读取 ArrayList,这些方法不应该反映这一点吗?
import java.util.*;
import java.io.*;
class ContactsCollection implements Serializable
{
public static final long serialVersionUID = 42L;
ArrayList <Contact> contactList = new ArrayList<Contact>();
public void write()
{
try
{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("contactList.dat"));
out.writeObject(contact);
}
catch(IOException e)
{
e.printStackTrace();
}
}
public void read()
{
try
{
ObjectInputStream in = new ObjectInputStream(new FileInputStream("contactList.dat"));
Contact contact = (Contact)in.readObject();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
}
}