W Javie nie ma prostej konstrukcji umożliwiającej powtórzenie czegoś N razy. Oczywiście możemy utworzyć pętlę for, ale w zdecydowanej większości przypadków nie obchodzi nas, jaki rodzaj zmiennej utworzymy w pętli. Chcemy po prostu, aby jakaś część kodu została powtórzona N razy i to wszystko.
Po wprowadzeniu wyrażeń lambda w Javie 8 można użyć czegoś takiego:
public class RepeatDemo { public static void main(String[] args) { // Повтор одной строки repeat(10, () -> System.out.println("HELLO")); // Повтор нескольких строк repeat(10, () -> { System.out.println("HELLO"); System.out.println("WORLD"); }); } static void repeat(int n, Runnable r) { for (int i = 0; i < n; i++) r.run(); } }
Prawdopodobnie nie jest to tak przyjemne dla oka i tak oczywiste jak stara, dobra pętla for, ale pozwala pozbyć się dodatkowej zmiennej w pętli. Gdyby tylko Java 8 poszła o krok dalej i zapewniła „czekoladową” składnię argumentów w wyrażeniach lambda, mielibyśmy coś w rodzaju kodu Scala/Groovy, co uczyniłoby kod znacznie bardziej wizualnym. Na przykład:
// Ну разве не здорово было бы иметь такую конструкцию в Java? repeat(10) { System.out.println("HELLO"); System.out.println("WORLD"); }
Źródło
GO TO FULL VERSION