giovedì, giugno 29, 2006

Interfacce e metodi "opzionali" :-((

Ieri dedicavo un po' di tempo alle slide per il corso Java Beginners del JugTO [1]... e mi sono accorto una volta in più della mia ignoranza.
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:UnsupportedOperationException
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?