Java ClassCastException错误(对象和向量)

Java ClassCastException错误(对象和向量),java,java-me,lwuit,Java,Java Me,Lwuit,我正在与LWUIT List合作。以下是创建列表的方式: db = new ClientDB(); listclient = db.listClient(); tModel = new ListSource(listclient); renderer = new CListCell(true, new String[]{"", "", "Encours : ", "Impayés : "}); tList = new CList(tModel, renderer); public Vector

我正在与LWUIT List合作。以下是创建列表的方式:

db = new ClientDB();
listclient = db.listClient();
tModel = new ListSource(listclient);
renderer = new CListCell(true, new String[]{"", "", "Encours : ", "Impayés : "});
tList = new CList(tModel, renderer);

public Vector listClient()
    {
        try
        {
            filter = new Filter("");
            comparator = new Comparator();
            enumRec = this.enumerateRecords(filter, comparator);
            while(enumRec.hasNextElement())
            {
                id = enumRec.nextRecordId();
                recIDs.addElement(new Integer(id));
                bData = this.getRecord(id);
                client = new Client(bData);
                if (!innerResultat.isEmpty())
                {
                    innerResultat.removeAllElements();
                }
                innerResultat.addElement(new String(client.getIdclient()));
                innerResultat.addElement(new String(client.getCin()));
                innerResultat.addElement(new String(client.getNoms()));
                innerResultat.addElement(new String(client.getEncours()));
                innerResultat.addElement(new String(client.getImpayes()));
                resultat.addElement(innerResultat);
            }
        }
        catch (Exception ex) {
            ex.printStackTrace();
        }
        return resultat;
    }
public class ListSource extends DefaultListModel {

    public ListSource(Vector valeur)
    {
        super(valeur);
    }
    public int getListIDs(int ligneSelected)
    {
        return ligneSelected;
    }
}
public class CListCell extends Container implements ListCellRenderer {

    private boolean isPhotoDisplayed;

    private BorderLayout photoLayout = new BorderLayout();
    private BoxLayout yLayout = new BoxLayout(BoxLayout.Y_AXIS);

    private Vector vLabels = new Vector();
    private Label pic = new Label("");
    private Container cnt;

    private Font fontLibelle = (MenuPrincipalForm.r).getFont("FontTextFieldBold");

    private Label focus = new Label("");

    public CListCell(boolean displayPhoto, String[] libelles)
    {
        isPhotoDisplayed = displayPhoto;
        this.getSelectedStyle().setPadding(0, 0, 0, 0);
        this.getUnselectedStyle().setPadding(0, 0, 0, 0);
        if (displayPhoto)
        {
            setLayout(photoLayout);
            addComponent(BorderLayout.WEST, pic);
        }
        else
        {
            setLayout(yLayout);
        }
        cnt = new Container(yLayout);
        for (int i=0;i<libelles.length;i++)
        {
            vLabels.addElement(new Label(libelles[i]));
            ((Label)vLabels.elementAt(i)).getStyle().setBgTransparency(0);
            ((Label)vLabels.elementAt(i)).getStyle().setFont(fontLibelle);
            cnt.addComponent(((Label)vLabels.elementAt(i)));
        }
        addComponent(BorderLayout.CENTER, cnt);
        focus.getStyle().setBgTransparency(100);
    }
    public Component getListCellRendererComponent(List list, Object value, int index, boolean isSelected)
    {
        Vector reelData = new Vector();
        if (value != null && (value instanceof Vector))
        {
            if (((Vector)value).isEmpty())
            {
                if (isPhotoDisplayed)
                    pic.setIcon(null);
                for (int i=0; i<vLabels.size(); i++)
                    ((Label)vLabels.elementAt(i)).setText(((Label)vLabels.elementAt(i)).getText().concat("-"));
            }
            else
            {
                reelData = (Vector)((Vector)value).elementAt(index);
                for (int i=0; i<vLabels.size(); i++)
                    ((Label)vLabels.elementAt(i)).setText(((Label)vLabels.elementAt(i)).getText().concat(String.valueOf(reelData.elementAt(i+1))));
                pic.setIcon(null);
            }
        }
        return this;
    }
    public Component getListFocusComponent(List list)
    {
        return focus;
    }
}
public class CList extends List {
    public CList(ListSource model, CListCell renderer)
    {
        setModel(model);
        setListCellRenderer(renderer);
        setItemGap(0);
        setFixedSelection(List.FIXED_NONE_CYCLIC);
    }
}

一般来说,检查是否可以进行强制转换是一个好主意。在你的例子中,你似乎得到了一些不是向量的物体

if (value != null && value instanceof Vector) {
    Vector vector = (Vector) value;

    ... your body with vector instead of value
} else {
    throw new IllegalArgumentException("Man I didn't get a Vector!");
}

你是否考虑过使用泛型类型?

你仍然在压制异常的重要部分,告诉你它应该是哪个对象。发布实际堆栈跟踪。您在
列表上传递的
对象是什么?@bharath:这是向量的向量,我将其作为其数据源模型传递给列表。您能告诉您的代码如何传递列表中的值吗?为什么在这个问题上有java me标记?您是否在JavaME中执行此代码?有一点非常奇怪:我编写了此代码:
if(value!=null&(value instanceof Vector))
在强制转换之前,应用程序进入
if
块(我编写了一个System.out.println)。但是当输入
if
块时,就会引发ClassCastException!我打印了向量的元素数,它显示了3。那么该怎么办呢?那么您对异常源的诊断是错误的。你能发布你修改过的代码和完整的堆栈跟踪吗?你使用过任何框架来修改类的字节码吗?我不知道。据我所知,我已经下载了Sun Java ME平台SDK 3.0,而Oracle JDK for Windows Java ME没有泛型,它基于JDK 1.3(参见维基百科中的egg)
if (value != null && value instanceof Vector) {
    Vector vector = (Vector) value;

    ... your body with vector instead of value
} else {
    throw new IllegalArgumentException("Man I didn't get a Vector!");
}