Uberto Barbini uberto.g...@gmail.com [it-torino-java-jug] ha scritto il 30/11/18 alle 13:51: > > > dovrebbero essere tutti distrutti alla fine dello stream, no? >
Volevo risponderti che, sì, nell'esempio di Simone vengono distrutte perchè lo stream di tuple viene consumato, invece che restituito, e che se invece lo riscrivi così public Stream<? extends Object> tuples() { return Arrays.asList("1", "22", "333").stream() .map(v -> new Object() { String value = v; int length = v.length(); }) .filter(tuple -> tuple.length % 2 == 0); } hai un memory leak. Però poi ho provato a usarlo ed totalmente inutile: ovviamente non puoi accedere ai campi "value" e "length" da fuori. A meno di reflection o di definire un tipo con quei membri, e allora addio al vantaggio sintattico. Quindi tolgo il "molto" dal "molto figo". E' un caso buono solo per casi come quello dell'esempio federico