Quote Originariamente inviata da andbin Visualizza il messaggio
Ehm ... purtroppo sì, invece. "true" è un String è il equals è il suo, di String. Ma stai passando come argomento un Boolean (autoboxato da boolean). Il equals riceve in generale un Object ma è tipico per le classi verificare che l'oggetto sia dello stesso tipo (tipicamente con instanceof). E String quindi non accetta un Boolean!

Banalmente si potrebbe fare

return citta.isDiMare() == true;

o ancora più semplice:

return citta.isDiMare();

che non cambia nulla nel significato.
accidenti che errore. grazie per avermelo fatto notare.

Quote Originariamente inviata da andbin Visualizza il messaggio
Ma c'è di più. Tu hai creato un metodo statico che riceve un Citta e su quest'ultimo invochi un metodo di istanza isDiMare(). Di per sé non servirebbe ... bastarebbe invocare

System.out.println("Lista città di mare:\n"+ getCittaFiltrate(listaCitta, Citta::isDiMare) + "\n");
e questo posso farlo perchè il metodo isDiMare restituisce un boolean e quindi è "compatibile" con Predicate?