Ad esempio non conoscevo il fatto che le interfacce potessero avere dei metodi opzionali.
Chi è più esperto e ferrato di me ha già capito che sto andando a sparlare del collection framework :-):
"All of the modification methods in the collection interfaces are labeled optional. Some implementations may not perform one or more of these operations, throwing a runtime exception (UnsupportedOperationException) if they are attempted. Implementations must specify in their documentation which optional operations they support."
Ad esempio queste istruzioni, perfettamente legali per il compilatore, a runtime riservano delle sorprese:
Set aSet = someHashMap.keySet();
//BANG:UnsupportedOperationExce
aSet.addAll(someCollection);
A me sta cosa piace proprio per niente:
- rende difficile e "pericoloso" programmare per interfacce
- è diseducativa (lo fanno nel jdk... vuoi che non possa farlo io??)
Possibile che il JDK continui a riservare sorprese di questo tipo?