我对Java还是很陌生,我曾尝试在StackOverflow / Google上四处浏览,但找不到解决问题的答案。

问题:我有一个已设置为句子的名称为“s”的字符串。
然后,我想使用Lambda .forEach循环遍历对象列表,从对象中检索toString()并将其添加到此字符串中。

这是我的代码:

public String toString() {
    String s =  "In klas " + this.klasCode + " zitten de volgende leerlingen:\n";
    deLeerlingen.forEach(leerlingen -> {
        s += leerlingen.toString();
    });
    return s;
}

最佳答案

由于lambda外部变量必须为(effectively) final,因此无法直接使用String变量。

您可以改用 StringBuilder :

public String toString() {
    StringBuilder b = new StringBuilder();

    b.append("In klas ");
    b.append(this.klasCode);
    b.append(" zitten de volgende leerlingen:\n");

    deLeerlingen.forEach(leerlingen -> {
        b.append(leerlingen.toString());
    });

    return b.toString();
}

09-27 06:12