Quanto è confuso il nuovo SomeCollection (valori ...) :: contiene 'come un Predicato? [chiuso]

0

Tradizionalmente, una funzione che vuole saltare determinati elementi durante l'elaborazione accetterà un argomento Collection o var-args, ma nel mondo Java 8 penso che dovrei passare a Predicate s.

Ora, poiché il codice su cui sto lavorando è principalmente per test, la maggior parte dell'esclusione sarà "letterali" ad hoc, quindi suggerisco agli utenti di utilizzare il modulo

Arrays.of(a, b, ...)::contains

Mi chiedo quanto sia accettabile questo?

(Vedo un piccolo valore nel wrapping del modulo sopra in un sovraccarico perché sarà una firma in più da imparare e impedirà la semplice ottimizzazione dell'estrazione di questo "letterale" in una variabile.)

Modifica:

La vecchia funzione sarà come

public void processUnlessNameIn(String... names)

Voglio che il nuovo sia

public void processUnlessName(Predicate<String> pred)
    
posta billc.cn 30.12.2015 - 16:01
fonte

1 risposta

3

Per rispondere direttamente alla tua domanda: "un po 'confusa", dal momento che l'esempio di codice che hai dato non è corretto, almeno per me.

TBH, se la tua collezione contiene sempre string s, allora penso che aggiungere predicati / lambda sia eccessivo in questa situazione. Cosa ti prende veramente? Se si dispone di una raccolta di un tipo di oggetto più ricco e si desidera che l'utente sia in grado di operare su di esso, fornire una lambda anziché molte sostituzioni per ogni possibile scelta di filtro sarebbe sensato.

(Inoltre, rinominerei processUnlessName(...) in processExcept(...) , che sembra più chiaro, ma è puramente la mia opinione.)

    
risposta data 30.12.2015 - 18:00
fonte

Leggi altre domande sui tag