niezrozumiały problem z rzutowaniem.

0

Witam wszystkich forumowiczów. Piszę kolejnego posta = kolejny problem. Może ktoś im wytlumaczy co jest nie tak. Ogolnie problam nie pokazuje żadnego błędu...ale po wykonaniu programu otrzymuje błąd:
"Exception in thread "AWT-EventQueue-1" java.lang.ClassCastException: java.lang.String cannot be cast to XXXX"

Problem leży w tym kawałku kodu: tam gdzie wykonuje rzutowanie:

Object[] tab ;
Towar price;
double price2;

private void serrrerfPerformed(java.awt.event.ActionEvent evt) {                                         

    if(listaTowary.getSelectedIndex() >= 0 ) {
        tab = listaTowary.getSelectedValues();
        for(Object obj : tab ) {
            listaModelKoszyk.addElement(obj);
        }
    } else {
        JOptionPane.showMessageDialog(null, "Wybierz towar(y)");
    }
    
    for(Object obj : tab ) {
        price = (Towar)obj;          // czemu tu jest błąd po dodaniu kilku towarów do listy koszyka ????
        price2 += price.getCena();
    }

Wiecie co tu jest nie tak ?? Prosze o pomoc.

0

Dodajesz do tab elementy typu String, które nie są rzutowalne na typ Towar. Pokaż cały kod.

0

Nie rozumiem zbytnio...do tab dodaje tylko obiekty, ktore zwraca metoda getSlectedValues. Dołączam załącznik

0

w netbeansie mam podpowiedź, że zwraca tablicę obiektów... mam netbeansa 7.2.1

0

a skad wziales informacje ze ta metoda zwraca String ?

0

Odpal sobie program pod debuggerem i postaw breakpointa na linijce: tab = listaTowary.getSelectedValues();, to najlepiej dowiesz się co tam siedzi.

0

Ale nic nie widze wlasnie... result jest pusty, watches jest pusty a w output komunikat "Not able to submit breakpoint MethodBreakpoint [ZadNB.ListModelPanel].jButton1ActionPerformed '(Ljava/awt/event/ActionEvent;)V', reason: Method 'jButton1ActionPerformed' with signature '(Ljava/awt/event/ActionEvent;)V' does not exist in class ZadNB.ListModelPanel.
Breakpoint hit at line 265 in class ZadNB.ListModelPanel by thread AWT-EventQueue-1."

Dalej nie widze, gdzie ta metoda zwraca String... ????

0

Object[] tab ;//= new Object[100];
Towar price;
Towar chhhh;
double price2;
String ggggg;

private void prawyAllActionPerformed(java.awt.event.ActionEvent evt) {                                         

    if(listaTowary.getSelectedIndex() >= 0 ) {
        tab = listaTowary.getSelectedValues();
        for(Object obj : tab ) {
            listaModelKoszyk.addElement(obj);
        }
    } else {
        JOptionPane.showMessageDialog(null, "Wybierz towar(y)");
    }
    
    for(Object obj : tab ) { // faktycznie, rzekomo tab zawiera Stringi,
                             //ale wedlug netbeansa zwraca tablice obiektów
                             //co prawda String tez jest obiektem
                             //ale gdyby to tak miało działać....jak wygląda to
                             // pętdla for(String obj : tab) powina byc prawidlowa petląa tak nie jest
        chhhh = (Towar) obj;
        
        ggggg = (String) obj;
        cena5.setText(ggggg);
        cena5.setText(chhhh.getCena()+"");
        cena5.setText(tab+" ");

Moze inne rady ? :(

0

Zwykły println wystarczy, żeby przekonać się co jest w środku:

class Main
{
        public static void main (String[] args)
        {
                Object[] objs = new String[2];
                System.out.println(objs);
        }
}

daje np:
[Ljava.lang.String;@18c28a

Jak chcesz mieć fora po Stringach to musisz zrobić rzutowanie, np: http://ideone.com/hqHDRY

0

Rzutować potrafie, sopkojnie :p Błąd już zlokalizowałem, dzisiaj wieczorem będe to naprawiał. Błąd pojawił się w Tworzeniu obiektu Towar().

1 użytkowników online, w tym zalogowanych: 0, gości: 1