2017-01-15 12 views
1

配列をストリームする方法はArrays.stream(myArr)ですが、コードを読みにくくします。 Lombokのように、これを避けて最小化すると、myArr.stream()、さらにはmyArr.filter(...)またはmyArr.forEach(...)になる拡張機能はありますか?Javaの配列用に自動拡張機能はありますか?

+5

Arrays.streamは配列からストリームを取得する正しいメカニズムです。 Arraysクラスは、配列を操作するヘルパークラスです。これが気に入らない場合は、配列を避けてjava Collections APIを使用してください。 java.util.Collectionに 'stream()'が含まれています –

+4

Javaにはありません。確かに、あなたは何か他のもの(ロンボクのようなもの)をすることができます...しかし、あなたは本当のJavaを使用していません。 –

+1

読みやすさは作者の目には見えませんが、新鮮な目を持つ読者です。 'Arrays.stream()'はJavaでは実際に意味を持ち、 'Arrays.stream()'の指定はすぐに利用できます(読者にはまだ知られていません)。 (Lombokのような)ある種の言語外のメカニズムを介した配列は、この単純なコードの内容が理解できるようになる前に、読者がプログラム全体を読む必要があることを意味します。 –

答えて

0

ロンボクを使用してextension methodを追加することができます。たとえば、(未テスト):

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

独自のforEach()拡張メソッドを同じ方法で定義できます。

+0

ありがとう、それは私が探したものです – NikichXP

+0

@Downvoter、説明を気にしませんか? – shmosel

+0

@BrianGoetz OPは、明らかに私が提供したものと同じように、異言語的な解決法を求めています。問題ありますか? – shmosel

4

Arrays.streamが読めない理由がわかりません。しかし、もう1つの選択肢はStream.ofです。例えばStream.of(myarr)それは受け入れられますか?

関連する問題