toString メソッドでこれを行う必要があるのはなぜですか?
独自に作成したカスタマイズされたフォーマッタ クラスにリストを渡すことをお勧めします。ただし、どうしてもというのであれば、ArrayList を拡張して toString メソッドのみをオーバーライドするのも 1 つの方法だと思います。
1 つの選択肢は、Person クラス自体に、独自のタイプのアイテムのコレクションをフォーマットする複雑さを処理させることです。
public class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public String toString() {
return this.lastName + ", " + this.firstName;
}
public static String toString(Collection<Person> persons) {
Iterator<Person> it = persons.iterator();
if (!it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
Person e = it.next();
sb.append(e);
if (!it.hasNext())
return sb.append(']').toString();
sb.append('&').append(' ');
}
}
}
次に、次のようなことを簡単に行うことができます。
Person p1 = new Person("Obi-wan", "Kenobi");
Person p2 = new Person("Luke", "Skywalker");
List<Person> jedis = new ArrayList<>();
jedis.add(p1);
jedis.add(p2);
System.out.println(Person.toString(jedis));
出力は次のとおりです。[Kenobi, Obi-wan& Skywalker, Luke]
しかし、これは単なるアイデアです。他にもたくさんの方法があると確信しています。