print toString() 不打印 ArrayList Class 成员对象

print toString() doesn't print ArrayList Class member objects

为什么 print toString() 不打印数组 Class 成员对象?它说 "cannot return a void result"。当我的 ArrayList 私有对象包含值时,它想要什么类型的结果。

例如:在Person class-

public class Person { 

    private ArrayList <String> name;

    private ArrayList <Integer> number;

    public Person(ArrayList <String> thatName, ArrayList <Integer> thatNumber) 
    {
        name = new ArrayList <String>(thatName);
        number = new ArrayList <Integer>(thatNumber);
    }

    public ArrayList<String> getName() 
    {
        return name;
    }

    public ArrayList<Integer> getNumber() 
    {
        return number;
    }

    public String toString() 
    {
        return System.out.println(name + "" + number); //Gives error "cannot return a void result"    
    }   

此外,我可以让 String.format(,) 在这种情况下工作吗?我试过了,但它不起作用,因为 ArrayList 对象类型不是原始数据类型。

编辑:

我是这样调用 Person class 但是 toString() 没有打印任何东西。

import java.util.ArrayList;
public class PersonTest {

public static void main(String[] args) {

    ArrayList <String> nam = new ArrayList <String>();
    ArrayList <Integer> numb = new ArrayList <Integer>();

    nam.add("Zeus");
    numb.add(99);

    Person pr = new Person(nam, numb);

    pr.toString();

}

}

你要return一个字符串,println是一个void方法。

有点类似于这个Python问题——How is returning the output of a function different than printing it?

改变

return System.out.println(name + "" + number)

return name + "" + number;

Also, can I make String.format(,) work in this case?

当然可以。 return String.format("Names: %s\nNumbers: %s", name, number);

System.out.println 是空的,因此不能 return 任何东西。 你应该做的是:

public String toString()
{
  return name + " " + number;
}

并且在调用者中,使用 person 实例来打印:

System.out.println(person.toString());

或以下,因为打印对象将自动调用 toString() 方法。

System.out.println(person);