Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Problema con java.lang.ClassCastException

    devo fare inserimento in un db mysql:
    tra i vari parametri ho due presi da due combobox.
    Autori:
    codice:
    public class Author {
    
        private int id;
        private String name;
    
        public Author(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public int getAId() {
            return id;
        }
    
        @Override
        public String toString() {
            return name;
        }
    }
    Editori:
    codice:
    public class Editor {
    
        private int id;
        private String name;
    
        public Editor(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        public int getEId() {
            return id;
        }
    
        @Override
        public String toString() {
            return name;
        }
    }
    le riempio così:
    codice:
        private void fillEditor() throws SQLException, ClassNotFoundException {
            comboEditor.removeAllItems();
            comboEditor.addItem("*");
            ArrayList listE = DoFillEditor.fillEditor();
            for (Object objE : listE) {
                comboEditor.addItem(objE);
            }
        }
    
        private void fillAuthor() throws SQLException, ClassNotFoundException {
            comboAuthor.removeAllItems();
            comboAuthor.addItem("*");
            ArrayList listA = DoFillAuthor.fillAuthor();
            for (Object objA : listA) {
                comboAuthor.addItem(objA);
            }
        }
    il problema è che quando vado clicco sul pulsante di inserimento mi compare sempre questo messaggio:
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: models.Author cannot be cast to models.Editor
            at frame.Main.btnAddBookActionPerformed(Main.java:578)
            at frame.Main.access$900(Main.java:11)
            at frame.Main$9.actionPerformed(Main.java:259)
    .......
    queste sono le righe che interessano:
    codice:
    .....
    Author author = (Author) comboAuthor.getSelectedItem();
    int author_id = author.getAId();
    Editor editor = (Editor) comboEditor.getSelectedItem();
    int editor_id = editor.getEId();
    DoInsert.insert(name.toLowerCase().trim(), author_id, editor_id, price, isbn.toLowerCase().trim(), note.trim());
    .......
    la riga 578 è quella che riguarda l'Editor.
    nn riesco a capire dove sbaglio.

  2. #2
    Sarebbe utile vedere dove istanzi comboEditor.
    Inoltre, ma non c'entra niente col problema in questione, ti suggerisco di modificare i metodi getAId() e getEId(), assolutamente fuori standard, sostituendoli con getId().
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Originariamente inviato da satifal
    Sarebbe utile vedere dove istanzi comboEditor.
    Inoltre, ma non c'entra niente col problema in questione, ti suggerisco di modificare i metodi getAId() e getEId(), assolutamente fuori standard, sostituendoli con getId().
    si si i get li avevo messi così per vedere se erano quelli che davano problemi.
    cmq sia il problema era nella classe di che effettua la query select che estrapola gli editori.
    qui istanziavo la classe Author invece che Editor.
    un mare di tempo buttato per una c*****a simile

  4. #4
    Originariamente inviato da fermat
    ...
    cmq sia il problema era nella classe di che effettua la query select che estrapola gli editori.
    qui istanziavo la classe Author invece che Editor.
    ...
    Ovviamente. Dall'errore si evinceva chiaramente che il problema fosse quello.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Originariamente inviato da satifal
    Ovviamente. Dall'errore si evinceva chiaramente che il problema fosse quello.
    si ma cercavo in tutte le altre classi.
    solo parecchio dopo mi è venuto in mente di guardare la.
    ero sicuro fosse a posto.

  6. #6
    Originariamente inviato da fermat
    si ma cercavo in tutte le altre classi.
    solo parecchio dopo mi è venuto in mente di guardare la.
    ero sicuro fosse a posto.
    Lo stack trace di un'eccezione ti indica esattamente quale classe ha originato il problema...
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  7. #7
    bhe in questo caso mi indicava dove avveniva il problema (nel jfram main) ma la causa era un'altra classe che non era nominata nel trace.

  8. #8
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: models.Author cannot be cast to models.Editor
            at frame.Main.btnAddBookActionPerformed(Main.java:578)
            at frame.Main.access$900(Main.java:11)
            at frame.Main$9.actionPerformed(Main.java:259)
    .......
    Ti dice chiaramente che stai cercando di castare a model.Editor un istanza di model.Author per cui l'unica spiegazione possibile è che l'istanza restituita dal metodo comboEditor.getSelectedItem() sia di tipo model.Author me che quindi hai commesso un errore il fase di creazione dell'istanza.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.