2017-01-15 2 views
1

Es gibt eine Möglichkeit, Array zu streamen: Arrays.stream(myArr), aber es macht Code ein bisschen schwer zu lesen. Gibt es irgendwelche Erweiterungen, wie Lombok, um dies zu vermeiden und auf myArr.stream() oder noch besser auf myArr.filter(...) oder myArr.forEach(...) zu minimieren?Gibt es eine Autostream-Erweiterung für Array in Java?

+5

Arrays.stream ist der richtige Mechanismus, um einen Stream aus einem Array zu erhalten. Die Array-Klasse ist eine Hilfsklasse für die Arbeit mit Arrays. Wenn Sie dies nicht mögen, vermeiden Sie Arrays und verwenden Sie die Java Collections API. java.util.Collection enthält 'stream()' –

+4

Nicht in Java. Sicher, du kannst etwas anderes (wie Lombok) ... aber dann verwendest du kein echtes Java. –

+1

Lesbarkeit liegt nicht in den Augen des Autors, sondern ein Leser mit frischen Augen. 'Arrays.stream()' hat tatsächlich eine Bedeutung in Java, und die Spezifikation von 'Arrays.stream()' ist leicht verfügbar (wenn dem Leser nicht bereits bekannt). Während affe-patches eine 'stream() 'Methode auf Arrays über einen extralinguistischen Mechanismus (wie Lombok) bedeutet, dass Ihr Leser _ihr ganzes Programm_ lesen muss, bevor er verstehen kann, was dieses einfache Code-Snippet tut. –

Antwort

0

Sie können lombok verwenden, um eine extension method hinzuzufügen. Zum Beispiel (ungetestet):

@ExtensionMethod(java.util.Arrays.class) 
public class Example { 
    String[] myArr = {"A", "B", "C"}; 
    myArr.stream().forEach(System.out::println); 
} 

Sie können Ihre eigene forEach() Erweiterungsmethode in der gleichen Art und Weise definieren.

+0

danke, das ist, was ich suchte – NikichXP

+0

@Downvoter, vorsichtig zu erklären? – shmosel

+0

@BrianGoetz OP bittet eindeutig um eine extralinguistische Lösung, die genau das ist, was ich angeboten habe. Ist das ein Problem? – shmosel

4

Nicht sicher, warum Sie denken, Arrays.stream ist nicht lesbar. Aber die andere Alternative ist Stream.of. Zum Beispiel Stream.of(myarr) Ist das akzeptabel?

Verwandte Themen