Когда вы переопределяете метод toString () объекта, вам не нужно вызывать его, чтобы он работал следующим образом:
myObject.toString();
также для печати массивов, я рекомендую использовать расширенный цикл for, это проще.
Пример:
List<MyObject> mo = new ArrayList<MyObject>();
for(MyObject s: listObject){
System.out.print(s);
}
Приведенный выше пример отлично работает, если класс MyObject переопределяет метод toString ()
Примечание: просто представьте, что мо полон объектов.
Я думаю, что вы правильно переопределили метод toString (), проблема только в вашем цикле. Попробуйте расширенный цикл for:
for(Purchase p: purchases) {
System.out.println(p);
}
Это должно сделать работу