[英]getting the ClassCastException
我正在收到ClassCastException,並且找不到發生它的原因。
這是我遇到的問題:(Semestre)強制轉換行:
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());
}
}
這是一些其他重要的代碼:
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;
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;
}
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;
}
}
在Lista
類中,方法getData()
返回您創建的Nodo
對象,如下所示:
Nodo lista = new Nodo(((Datos) head.getNext().getObjeto()).getDatos(), null);
因此,此Nodo
對象的objeto
字段objeto
設置為getDatos()
類的Semestre
getDatos()
方法的返回值,該類的類型為Object[]
。
在導致方法F1()
出現問題的行中:
Semestre seme = ((Semestre) listaSem.getData().getObjeto());
...您正在使用getObjeto()
返回的Object[]
並嘗試將其Semestre
為Semestre
,從而導致ClassCastException
。
要解決此問題,您可以使用以下兩行更改該行及其后的一行:
Object[] datos = (Object[]) listaSem.getData().getObjeto();
ListaAsignatura listaAsig = (ListaAsignatura) datos[1];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.