látom átjött a lényeg. a példa bugyuta (3 sorban nem is lesz jobb), de fentebb leírtam mi a gond.
de tessék, itt egy komplexebb. Adott Foo lib, benne a következő interfész:
interface Foo {
ParsedFoo parse(InputStream is);
}
szeretném egy könyvtár alól az összes
.foo
fájlt felolvasni, majd felparsolni mindet.
Most:
Files.walk(path)
.map(Files::newInputStream) // itt biztosan elhal
.map(fooInstance::parse) // ha az interfész checked exceptiont dobna, itt is...
.collect(Collectors.toList());
Na, rakjam ezt is egy try-catch-be? Ha utána esetleg dolgozni akarok a parseolt dolgokon? Akkor? Meddig? 6 soros stream belefér? 8?
Tudom, a Files.lines megold nekem mindent.