Mam następujące klasy:Dlaczego lambda zmusza mnie do użycia tablicy pojedynczych elementów zamiast końcowego obiektu?
public class Item{
private String name;
//setter getter
}
i zbieranie przedmiotów. Chciałbym uzyskać nazwę ostatniego przedmiotu w kolekcji. Aby to zrobić, po prostu powtarzam po całej kolekcji i używam jako ostatniej. Problem polega na tym, że nie wiem, dlaczego zmusza mnie do korzystania z jednego elementu tablicy łańcuchów.
Dlaczego muszę używać:
String[] lastName = {""};
items.forEach(item -> lastName[0] = item.getName());
System.out.println(lastname[0]);
zamiast:
final String lastName;
items.forEach(item -> lastName = item.getName());
System.out.println(lastname);
"Kolekcja" nie ma porządku, jeśli chcesz konkretny element, prawdopodobnie będziesz chciał użyć 'ArrayList'. – DennisW
'lastname'jest' końcowe' i nie można przypisać wartości więcej niż jeden raz. Więc nie możesz go użyć w pętli po lewej stronie. – nkr
Zobacz http://stackoverflow.com/questions/4732544/why-are-online-valge-variables-accessible-in-anonymous-class –