Java 如何从main向ArrayList添加对象?

Java 如何从main向ArrayList添加对象?,java,object,arraylist,main,Java,Object,Arraylist,Main,所以我有一个名为Persons的类,这个类在main中创建时有一个添加Person对象的方法 import java.util.*; public class Persons { public ArrayList<Person> personsList = new ArrayList<Person>(); public boolean addPerson(Person newPerson) { personsList.add(newPerson)

所以我有一个名为Persons的类,这个类在main中创建时有一个添加Person对象的方法

import java.util.*;

public class Persons {

public ArrayList<Person> personsList = new ArrayList<Person>();

   public boolean addPerson(Person newPerson) {
       personsList.add(newPerson);
       return true;
   }
}
import java.util.*;
公共阶层人士{
public ArrayList personlist=new ArrayList();
公共布尔addPerson(Person newPerson){
personsList.add(newPerson);
返回true;
}
}
这是我的主要方法

import java.util.*;

public class testPersons {

public static void main(String[] args) {

Persons persons = new Persons();

    Address person1Address = new Address(xxx, "xxx", "xxx", "CA", "xxx");
    Address person1JobAddress = new Address(1542, "High St", "Santa Cruz", "CA", "94063");
    ArrayList<String> person1Phone = new ArrayList<String>();
    person1Phone.add("xxx-xxx-xxx");
    Job person1Job = new Job("Teacher", 25000.00, person1JobAddress);
    Person person1 = new Person("xxxxxxx", "San Mateo", 'M', person1Address, person1Job, person1Phone);

    persons.addPerson(person1);

    System.out.println(persons);
   }
}
import java.util.*;
公共类测试人员{
公共静态void main(字符串[]args){
人员=新人员();
地址人1地址=新地址(xxx,“xxx”,“xxx”,“CA”,“xxx”);
Address person1JobAddress=新地址(1542,“High St”,“Santa Cruz”,“CA”,“94063”);
ArrayList person1Phone=新的ArrayList();
person1Phone.add(“xxx xxx xxx”);
Job person1Job=新工作(“教师”,25000.00,person1JobAddress);
Person person1=新人(“xxxxxxx”、“San Mateo”、“M”、person1地址、person1工作、person1电话);
人员。添加人员(人员1);
系统输出打印(人);
}
}

所以我的问题是,“如何将对象Persons1添加到Persons类中的arrayList中?”它确实可以编译,但我运行它时,会听到奇怪的胡言乱语。是我的Persons类中缺少了一些东西,还是我不能像以前那样打印ArrayList中的对象?

确保所有与
Person
相关的类,包括
Person
覆盖默认的toString()

当您使用System.out.println(persons)时,会发生以下情况:

  • ArrayList中的
    Person
    对象被逐个调用
  • 对于每个
    Person
    对象,调用其
    toString()
    is方法。如果未重写
    toString()
    ,将调用
    对象
    (默认)
    toString
    。因此出现了“奇怪的胡言乱语”。您需要通过重写
    toString()

默认情况下,打印对象只会打印对象的
hashCode()
。如果您希望它在对象中循环并打印它包含的所有对象,则需要编写代码来执行此操作。您可以打印
人员的“默认”结果。一般的建议是覆盖
toString
,我个人认为这是个坏主意,
toString
应该保留用于调试。在您的情况下,您可以只遍历
PersonList
而不是
toString()?