【问题标题】:Wierd output with ArrayList in Java [duplicate]Java中ArrayList的奇怪输出[重复]
【发布时间】:2020-03-18 11:43:45
【问题描述】:

我是 Java 新手,我正在尝试向 ma ArrayList 添加一个对象,如下所示:

ArrayList<Wizytowka> baza = new ArrayList<Wizytowka>();
int nrTel = 123456789;
Wizytowka nowa = new Wizytowka("imie","nazwisko","nazwaFirmy","mail",nrTel);
baza.add(nowa);
System.out.println("Baza:\n"+baza);

但是输出很奇怪,看起来像这样:

Baza:
[com.company.Wizytowka@31cefde0]

我真的不知道出了什么问题。当我尝试从对象nowanowa.wypisz() 输出它时,它工作得很好。这是我的班级“Wizytowka”的样子:

public class Wizytowka {
private String imie;
private String nazwisko;
private String nazwaFirmy;
private String mail;
private int nrTel;

//imie
public void setImie(String imie){
    this.imie = imie;
}
public String getImie(){
    return this.imie;
}
//nazwisko
public void setNazwisko(String nazwisko){
    this.nazwisko = nazwisko;
}
public String getNazwisko(){
    return this.nazwisko;
}
//nazwa firmy
public void setNazwaFirmy(String nazwaFirmy){
    this.nazwaFirmy = nazwaFirmy;
}
public String getNazwaFirmy(){
    return this.nazwaFirmy;
}
//mail
public void setMail(String mail){
    this.mail = mail;
}
public String getMail(){
    return this.mail;
}
//nr telefonu
public void setNrTel(int nrTel){
    this.nrTel = nrTel;
}
public int getNrTel(){
    return this.nrTel;
}

public Wizytowka(String imie, String nazwisko, String nazwaFirmy, String mail, int nrTel){
    setImie(imie);
    setNazwisko(nazwisko);
    setNazwaFirmy(nazwaFirmy);
    setMail(mail);
    setNrTel(nrTel);
}

public void wypisz(){
    System.out.println("Imie: "+this.imie);
    System.out.println("Nazwisko: "+this.nazwisko);
    System.out.println("Firma: "+this.nazwaFirmy);
    System.out.println("Mail: "+this.mail);
    System.out.println("Nr tel.: "+this.nrTel);
}
}

感谢您的帮助

【问题讨论】:

  • 你需要在你的 Wizytowka 类中添加一个 toString() 实现
  • 你需要实现一个正确的toString()方法,即覆盖Object中的那个。

标签: java class arraylist


【解决方案1】:

覆盖 toString() 方法如下:-

   @Override
public String toString() {
    return "Wizytowka [imie=" + imie + ", nazwisko=" + nazwisko + ", nazwaFirmy=" + nazwaFirmy + ", mail=" + mail
            + ", nrTel=" + nrTel + "]";
}

public class Wizytowka {
    private String imie;
    private String nazwisko;
    private String nazwaFirmy;
    private String mail;
    private int nrTel;

    //imie


public Wizytowka(String imie, String nazwisko, String nazwaFirmy, String mail, int nrTel){
    setImie(imie);
    setNazwisko(nazwisko);
    setNazwaFirmy(nazwaFirmy);
    setMail(mail);
    setNrTel(nrTel);
}

public void wypisz(){
    System.out.println("Imie: "+this.imie);
    System.out.println("Nazwisko: "+this.nazwisko);
    System.out.println("Firma: "+this.nazwaFirmy);
    System.out.println("Mail: "+this.mail);
    System.out.println("Nr tel.: "+this.nrTel);
}
@Override
public String toString() {
    return "Wizytowka [imie=" + imie + ", nazwisko=" + nazwisko + ", nazwaFirmy=" + nazwaFirmy + ", mail=" + mail
            + ", nrTel=" + nrTel + "]";
}



}

【讨论】:

    【解决方案2】:

    如果你想查看对象的内容(不是类名和地址,默认 toString 实现来自 Object 类),你必须覆盖类 WizytowkatoString 方法。 tutorial有更多细节。

    为避免样板代码,您可能需要使用@ToString feature from lombok

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 2012-10-20
      • 1970-01-01
      • 2014-10-29
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多