Ciao a tutti. Oggi mi sono scontrato con una delle novità che Java ha messo a disposizione (cose che credo potessero risparmiarsi, dato che ora tutte le mia applicazioni perfettamente legali per JDK 1.4.2 non sono più compilabili in modo pulito per JDK 1.5.0).
Sono entrato nel sito della Sun, nella documentazione dopo che mi è apparso un misteriosissimo messaggio di Worning in fase di compilazione:
«[unchecked] unchecked call to add(E) as a member of the raw type java.util.Vector»
VVoVe: (mistero assoluto... che vorrà mai dire questa cosa??)
Andiamo avanti... entro nella documentazione della classe Vector (che fino alla versione 1.4.2 era un bellissima classe, semplicissima da usare, senza tanti problemi) e mi trovo qualcosa di orribile di fronte:
Altro mistero... che roba è quella <E> che fa tanto pensare ai template del C++?? Mah...codice:Class Vector<E> java.lang.Object | +- java.util.AbstractCollection<E> | +--- java.util.AbstractList<E> | +------ java.util.Vector<E>
Ma la cosa non finisce qui: vado a vedere quei metodi che pensavo di conoscere a memoria... e, sorpresa delle sorprese, tutto cambiato! Ora il metodo add() non riceve più un paramtero di tipo Object (come sarebbe lecito aspettarsi, dopo anni di utilizzo di questa classe), ma accetta un argomento di un tipo non ben definito: la misteriosissima classe E. Ok, mi dico... non scoraggiamoci, clicchiamo su questo link alla classe E e guardiamocela, dopo tutto, che sarà mai... Eppure anche qui una brutta sorpresa: il link riapre la classe Vector. Domanda: è ricorsiva? Mi devo preoccupare? E' una proprietà estensionale non banale? Devo ricorrere al teorema di Rice per comprenderla?
Così, sconsolato, mi metto alla ricerca dei tutorial... chissà mai che ti spieghino cosa voglia dire: altra brutta sorpresa... i tutorial si riferiscono ancora alla "vecchia" 1.4.2!
Io sono disperato: DEVO programmare, DEVO far funzionare questi benedetti programmi, senza dover riscrivere tutto il codice e senza (possibilmente) implementarmi una benedettissima classe Vector a modo mio (cosa che non sarebbe complessa, ma che vorrei evitare per non perdere troppo tempo).
Qualcuno mi illumina su queste (passatemi il termine) schifezze che la Sun si è sentita in dovere di aggiungere (e modificare qua e là)?
Grazie anticipatamente (e scusate il piccolo sfogo).
Ciao.