Guava Predicates non può essere utilizzato fuori dalla scatola come filtro con la Java 8 Streaming API.Come usare predicati guava come filtro nel flusso di Java API 8
UE Questo non è possibile:
Number first = numbers.stream()
.filter(com.google.common.base.Predicates.instanceOf(Double.class)))
.findFirst()
.get();
How mai ce ne è possibile quando il predicato guava viene convertito in un Java 8 predicate, come questo:
public static <T> Predicate<T> toJava8(com.google.common.base.Predicate<T> guavaPredicate) {
return (e -> guavaPredicate.apply(e));
}
Number first = numbers.stream()
.filter(toJava8(instanceOf(Double.class)))
.findFirst()
.get();
QUESTION: Is c'è un modo più elegante per riutilizzare i predicati di guava in java 8?
Basta usare '.filter (Double.class :: isinstance)' - senza involucro necessario . –
Perché pensi che "Predicate" non sia un'interfaccia funzionale? – zeroflagL
Il predicato di guaiave contiene 2 metodi, un'interfaccia funzionale deve averne uno. Ma questo non è un problema qui, perché il secondo metodo è "uguale". L'ho trascurato. – Chriss