Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798

    [JAVA] Casting di un oggetto Number

    Se provo a fare in casting di un oggetto Number a favore di un nuovo oggetto Float, il compilatore solleva l'eccezione ClassCastException.
    Float è un'estensione della classe Number.

    Come mai non posso effettuare il cast ?

    Sono ubriaco o cosa ? :dhò:

    Slack? Smack!

  2. #2
    MA number non è astratta?
    Come Fai Ad avere un oggetto Number?
    Fai un casting Esplicito?
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Visto che Number e' una sopraclasse di Float e' chiaro che non puoi fare il casting... Number non consoce nello specifico quello che Float puo' fare, in quanto Float e' piu' specializzata... il casting vale solo in senso inverso: Float e' prima di tutto un Number, quindi puo' anche comportarsi da tale, e accettare il cast.
    Ciao,
    Lorenzo

  4. #4
    Lelefante ha ragione!
    Ma resta la domanda di fondo: come fai ad avere un oggetto Number?
    Se hai un number che era un float, allora il casting vale! ma se era un Integer non dovrebbe valere!
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Ma resta la domanda di fondo: come fai ad avere un oggetto Number?
    Magari da un casting precedente da Float a Number e ora si trova nei guai...
    se cosi' fosse prova con istanceof e vedi se riesci a risolvere.
    Ciao,
    Lorenzo

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    Quello che dite è quasi giusto, ma voglio farvi un'esempio simile:
    <code>
    public void paintComponent(Graphics graphics) {
    Graphics2D g = (Graphics2D)graphics;
    ...
    }
    </code>
    Graphics2D è derivata da Graphics.
    In questo caso il casting viene effettuato senza problemi, e tutte e due le classi sono astratte.
    La classe Number mi viene restituita da un metoro della classe NumberFormat, il metodo parse(String).

    Oggi ho mangiato solo confusione ?!

    Ciauz !
    Slack? Smack!

  7. #7
    Originariamente inviato da lelefante
    Magari da un casting precedente da Float a Number e ora si trova nei guai...
    Appunto! allora il casting non sarebbe un problema..
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  8. #8
    Controlla il codice!
    magari hai sbagliato il puntatore?
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    1,798
    <code>
    try {
    String number = "1234,567890";
    NumberFormat nf = NumberFormat.getNumberInstance();
    Number n = nf.parse(number);
    Float f = (Float)n;
    System.out.println(number + "\t" + n.floatValue() + "\t" + f);
    } catch (ParseException e) {
    System.out.println("ParseException");
    }
    </code>

    Exception in thread "main" java.lang.ClassCastException
    at GestoreDati.main(GestoreDati.java:194)

    la riga 194 è questa:
    Float f = (Float)n;

    Cosa ho sbagliato a dirvi è che l'errore non viene generato durante la compilazione, ma in fase di esecuzione.

    Scusate !!!

    :tongue:
    Slack? Smack!

  10. #10
    Trovato!
    Ti crea un Double!!!!!
    non lo puoi castare in Float!!!
    Blink@go

    "Non tutto quel che è oro brilla, Ne gli erranti sono perduti; Il vecchio ch'è forte non s'aggrinza, Le radici profonde non gelano.Dalle ceneri rinascerà un fuoco, L'ombra sprigionerà una scintilla, Nuova sarà la lama ormai rotta, E re quei ch'è senza corona."

    ------------
    Lang: java 1.4.1 Eclipse

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.