Lista cannot be cast to java.util.List

0

Witajcie.
Mam taki problem, że mam Listę list w konstruktorze. Z poprzedniego okna przekazuję tutaj Listę z innymi listami w środku. Wszystko jest fajnie do momentu gdy chcę elementy tej głównej listy wrzucić do List<Lista> test. Mam taki komunikat i nie wiem jak ja tu mam to rozwiązać. To moje początki

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: program.Lista cannot be cast to java.util.List

private List<Lista> lista= new ArrayList<Lista>();

    
    public Program() {
        initComponents();
    }

    public Program(List<Lista> lista) 
    {
    initComponents();           
    
    
    if (lista.size() > 0)
        {            
            List<Lista> test = (List<Lista>) list.get(Id).getElementAt(0);
            
        }  
    
    }
0

Daj jeszcze mniej kodu żeby nic nie było wiadomo.
Błąd mówi jasno że twoje list.get(Id).getElementAt(0) zwraca obiekt program.Lista a ty próbujesz to wesoło rzutować na List<Lista>.
Zresztą generalnie jeśli musisz coś rzutować w ten sposób to na 99% coś zrobiłeś w kodzie źle. Ten brakujacy 1% to integracja ze starym kodem który nie używa typów generycznych.

0

Brakujący kod to ta klasa Lista

package program;

import java.util.List;
import javax.swing.AbstractListModel;
import javax.swing.DefaultListModel;

public class Lista extends AbstractListModel{

    private DefaultListModel lista;
    
    public Lista() {
        lista = new DefaultListModel();
    }
    
    public Lista(List<Pojazd> pLista) {
        lista = new DefaultListModel();
        for (Pojazd tmpPojazd : pLista){
            lista.addElement(tmpPojazd);            
        }
    }
    
    public Lista(List<Pojazd> pLista,int i) {
        lista = new DefaultListModel();
        for (Pojazd tmpPojazd : pLista){
            lista.addElement(tmpPojazd);            
        }
    }
            
    
    @Override
    public int getSize() {
        return lista.getSize();
    }

    @Override
    public Object getElementAt(int i) {
        return lista.getElementAt(i);
    }
    
}
    

 
1

No to, że tak się wyrażę, WTF? Z twojego kodu wynika że w tej swingowej liście trzymasz sobie obiekty Pojazd, co sugeruje że getElementAt zwróci ci właśnie Pojazd. Czy ty w ogóle rozumiesz co robisz? Bo mam wrażenie że ten kod jest sklejany na pałe z jakichś gotowców.

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