首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取ClassCastException

获取ClassCastException
EN

Stack Overflow用户
提问于 2013-09-14 00:51:52
回答 1查看 115关注 0票数 0

我得到了ClassCastException,却找不到它发生的原因。

以下是我遇到的问题:(半发情)铸造线:

代码语言:javascript
复制
private void F1(){
    int eol = listaSem.getCantNodos();

    Asignatura asig;
    for (int i = 0; i < eol; i++){
        Semestre seme = ((Semestre) listaSem.getData().getObjeto());
        ListaAsignatura listaAsig = (ListaAsignatura)seme.getDatos()[1];
        asig = (Asignatura) listaAsig.getData().getObjeto();
        System.out.println(asig.getSigla()+" | "+asig.getNombre()+" | Cantidad Justificaciones: "+asig.getCantJustificaciones());
    }
}

下面是一些对这种情况很重要的更多代码:

代码语言:javascript
复制
public class Semestre implements ID, Datos{

private String sem;
private ListaAsignatura listaAsig;

public Semestre(String sem) {
    this.sem = sem;
    listaAsig = new ListaAsignatura();
}
@Override
public Object[] getDatos() {
    Object[] datos = new Object[2];
    datos[0] = sem;
    datos[1] = listaAsig;

代码语言:javascript
复制
public class Nodo {

private Object objeto;
private Nodo next;

public Nodo(Object objeto, Nodo next) {
    this.objeto = objeto;
    this.next = next;
}

public Object getObjeto(){
    return objeto;
}

代码语言:javascript
复制
public class Lista {

protected Nodo head;

public Lista() {
    head = new Nodo(null, null);
}

public Nodo getData() {
    if (head.getNext() != null) {
        Nodo lista = new Nodo(((Datos) head.getNext().getObjeto()).getDatos(), null);
        Nodo tail = lista;
        for (Nodo aux = head.getNext().getNext(); aux != null; aux = aux.getNext()) {
            tail.setNext(new Nodo(((Datos) aux.getObjeto()).getDatos(), null));
            tail = tail.getNext();
        }
        return lista;
    } else {
        return null;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-14 16:03:36

在类Lista中,getData()方法返回您创建的Nodo对象,如下所示:

代码语言:javascript
复制
Nodo lista = new Nodo(((Datos) head.getNext().getObjeto()).getDatos(), null);

因此,这个Nodo对象的字段objeto将设置为来自类Semestre的方法getDatos()的返回值,该方法的类型为Object[]

在引起方法F1()中问题的行中

代码语言:javascript
复制
Semestre seme = ((Semestre) listaSem.getData().getObjeto());

...you正在使用getObjeto()返回的Object[],并试图将其转换为Semestre,从而导致一个ClassCastException

要解决这个问题,您可以用以下两行更改该行及其后面的一行:

代码语言:javascript
复制
Object[] datos = (Object[]) listaSem.getData().getObjeto();
ListaAsignatura listaAsig = (ListaAsignatura) datos[1];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18797233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档