This question already has answers here:
How do I print my Java object without getting “SomeType@2f92e0f4”?
                                
                                    (10个答案)
                                
                        
                                去年关闭。
            
                    
public class Alimento {

private String nome;
private int quantità;
private String scadenza;
private String tipo;


Alimento(JTextField txt_nome, JTextField txt_quantità, JTextField txt_scadenza, JTextField txt_tipo) {
    setNome(txt_nome.getText());
    setQuantità(Integer.parseInt(txt_quantità.getText()));
    setScadenza(txt_scadenza.getText());
    setTipo(txt_tipo.getText());

    /*System.out.println(getNome());
    System.out.println(getQuantità());
    System.out.println(getScadenza());
    System.out.println(getTipo());*/

}

public String getNome(){
    return nome;
}
public int getQuantità(){
    return quantità;
}
public String getScadenza(){
    return scadenza;
}

public String getTipo(){
    return tipo;
}

public String setNome(String name){
    return nome = name;
}

public int setQuantità(int quant){
    return quantità = quant;
}

 public String setTipo(String type){
    return tipo = type;
}

public String setScadenza(String scad){
    return scadenza = scad;
}

}




public class Dispensa{

LinkedList<Alimento> dispensa = new LinkedList<>();

public Dispensa(){}

public void add(Alimento alimento){
  dispensa.add(alimento);
}
public void showList(){
for (int i = 0; i < dispensa.size(); i++)
    System.out.println(dispensa);
}
}


当我尝试显示元素时,它们的数字地址为(mykitchen.Alimento@10a6cf9e)。我会显示类似:

名称:...

数量:...

对于链接列表中的每个元素

谢谢!

最佳答案

mykitchen.Alimento@10a6cf9e这样获得对象引用是正常的,因为您在System.out.println(dispensa);行中为对象调用了toString方法,dispensa对象是List对象的alimento,因此必须获取使用dispensa.get(index)在循环中的alimento对象,调用所需的getter。喜欢 :

public void showList(){
for (int i = 0; i < dispensa.size(); i++)
  {
    Alimento  alimento = dispensa.get(i);
    System.out.println(alimento.getNome());
  }
}


您也可以在类中为toString()定义Alimento,这样就不必调用getNome()

09-28 12:59