Uberto Barbini [email protected] [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

Reply via email to