L'interfaccia java.util.Predicate contiene il metodo test(...) , di cui JavaDoc indica che [valuta] questo predicato sull'argomento specificato e che [restituisce] true se l'argomento di input corrisponde al predicato, altrimenti falso .
Devo dire che test(..) restituisce sempre true o false e non è mai permesso lanciare un'eccezione? Chiedo, perché le classi dal framework Collections hanno il concetto di "operazioni opzionali", dove è esplicitamente menzionato nel JavaDoc che alcuni metodi potrebbero generare UnsupportedOperationException .
Prima di tutto, non sono un programmatore Java, non lavoro nello sviluppo di software di per sé, ma uso un linguaggio che è simile a Java per alcuni aspetti e cerco di seguire le convenzioni Java ove possibile. Ho provato a cercare risorse sull'argomento, ma la maggior parte di loro menziona come eseguire il controllo delle eccezioni dal codice dello stream.
Proverò a fare un esempio forzato qui. Diciamo che ho una classe Person e una Predicate definita come class IsAdult implements Predicate<Object> . Tieni presente che ho utilizzato Predicate<Object> e non Person . Farebbe bene a lanciare un'eccezione se l'oggetto da testare non è un Person , per il quale è possibile determinare se sono adulti, o se il ritorno del predicato false , visto come l'oggetto che ha testato non poteva in nessun caso sono stato un adulto.