如何读取java中另一个类中定义的类的arraylist元素?

时间:2014-12-16 11:47:57

标签: java netbeans arraylist

我正在为我的大学做一个项目。 我有两个类“Email_info”和“联系人”。在“联系人”课程中,我制作了一个“Email_info”类型的Arraylist。此类联系人用于将数据添加到XML文件(“contacts.xml”),并使用email_info类的变量。问题是每当我在解组文件后尝试访问此“contacts.xml”文件的元素时,我得到的地址为“mailwidgetaa.Email_info@12d3a4e9”而不是实际数据(应该是e_id- abc @gmail。 com,pass-password)。那么如何获取实际数据呢?

下面的

是完整的代码::

 package mailwidgetaa;
@XmlRootElement
public class Contacts {

List<Email_info> contacList = new ArrayList<Email_info>();

@XmlElement
public List<Email_info> getContacList() {
    return contacList;
}

public void setContacList(List<Email_info> contacList) {
    this.contacList = contacList;
}
}


@XmlRootElement
class Email_info {

String e_id;
String u_name;
String pass;

@XmlElement
public String getE_id() {
    return e_id;
}

public void setE_id(String e_id) {
    this.e_id = e_id;
}

@XmlElement
public String getU_name() {
    return u_name;
}

public void setU_name(String u_name) {
    this.u_name = u_name;
}

@XmlElement
public String getPass() {
    return pass;
}

public void setPass(String pass) {
    this.pass = pass;
}

}

  public class Mailwidgetaa {

 public static void main(String[] args) {

contatcs con = new contacts();
con = null;

    try {
        JAXBContext jaxbc1 = JAXBContext.newInstance(Contacts.class);
        Unmarshaller unmarsh = jaxbc1.createUnmarshaller();
        con = (Contacts) unmarsh.unmarshal(new File("contacts.xml"));

    } catch (Exception e) {
        System.out.println("Exception " + e.getMessage());
    }

    Email_info ein = new Email_info();
    ein.setE_id(ui);
    ein.setU_name(un);

    con.getContacList().add(ein);

    try {

        JAXBContext jaxbc = JAXBContext.newInstance(Contacts.class);
        Marshaller marsh = jaxbc.createMarshaller();
        marsh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marsh.marshal(con, new File("contacts.xml"));
  } catch (JAXBException e) {
        System.out.println("EXCEPTION" + e.getMessage());
    }
  }  

    Iterator e= con.contacList.iterator();
        while(e.hasNext()){
            System.out.println(e.next());
        }

  }

1 个答案:

答案 0 :(得分:1)

那是因为你还没有在Email_Info类中实现toString方法。实现它像:

@Override
public String toString() {
   return "e_id: " + e_id + " u_name: " + u_name + " pass: " + pass;
}