Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425

    [Java] ClassCastException strano

    ciao, non riesco a capire xhè questo cast da eccezione:

    codice:
    ...
    public Value[] getAllValue() {
    return (Value[]) value.toArray();//toArray ritorna Object[]
    }
    ...
    Lo richiamo così:

    codice:
    ...
    Campo c = t.selectCamp("Test");
    Value ve[] = c.getAllValue();
    //getAllValue l'unico metodo che non va  :dhò: 
    ...
    E quel value è un vettore che contiene effetivamente oggetti Value:

    codice:
    ...
    value.addElement(new Value(v.toString(), this));
    ...
    Non capisco, se non faccio il cast quindi ridefinisco toString() a Value e li tratto come Object funziona, ma dopo sarà l'unico metodo che stona con l'interfaccia generale della classe dove tutti i metodi usano Value come ritorno, inoltre dopo non potrò agire sui field incapsulati in Value

    Anche se uso Java 5 non posso usare i genereiscs per poter rendere compilabili i sorgenti anche in altre versioni della jdk.

    Spero che troviate qualcosa che a me è sfuggito e se servono altri pezzi do codice o chiarimenti no problem

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Credo che sia un problema della classe Vector. Lo stesso problema si verifica, solitamente, con la classe String quando si ha a che fare con array di String.

    Comunque, controlla di non avere un array bidimensionale, piuttosto che un array monodimensionale, ovvero, nel Vector inserisci degli oggetti Value (come hai riportato nel codice) oppure degli array di Value?


    In ogni caso, prova a costruire prima l'array, prendendo singolarmente ciascuno degli elementi contenuti nel Vector e solo dopo restituirlo:
    codice:
    public Value[] getAllValues() {
       Value [] tmp = new Value[value.size()];
       for (int i=0; i<tmp.length; i++) tmp[i] = (Value) value.elementAt(i);
    
       return tmp;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    inserisco oggetti value singoli, infatti il metodo che mi ritorna un valore da solo:

    codice:
    public Value getValueID(int ID) throws ElementNotFoundException {
    			Value v = null;
    			try {
    			v = (Value) value.get(ID);
    			} catch(ArrayIndexOutOfBoundsException e) {
    			
    throw new ElementNotFoundException("Il valore con ID \"" + 
    ID + "\" non è stato trovato");
    		}
    			return v;	
    		}
    }
    va a buon fine :master:

    grazie per avermi detto di quel problema che da anche con le stringhe, magari potrei fare un sistema meno forbito ma che almeno rispetta l'interfaccia


    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  4. #4
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    eccolo!
    hai modificato mentro ho postato, bene grazie
    Era si il metodo poco forbito di cui parlavo, ma se non funzia in altro modo...

    grazie vediamo se ora va
    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.