hola comunidad!! recurro a ustedes porque tengo un problema que no entiendo
voy a tratar de ser lo mas claro posible, ya que hay algunas clases de por medio.
Código:
public class Nodo<E> implements Position<E>
{
...
protected ListaSimplementeEnlazada<Nodo<E>> hijos;
...
public ListaSimplementeEnlazada<Nodo<E>> getHijos()
{return hijos;}
...
}
la clase Position<E> no es muy importante, solo es importante saber que Nodo<E>implementa Position<E>.
la ListaSimplementeEnlazada, si bien la uso, tampoco es de importancia, es una Lista de tipo generico E.
Código:
public class Arbol<E> implements Tree<E>
{
...
public Iterable<Position<E>> children(Position<E> v) throws InvalidPositionException
{return checkPosition(v).getHijos();}
...
}
el metodo checkPosition(v) devuelve un Nodo<E>, y tira excepcion si no es valido (por eso la InvalidPositionException).
mi problema esta en "return checkPosition(v).getHijos();"
me tira el siguiente error: "Type mismatch: cannot convert from ListaSimplementeEnlazada<Nodo<E>> to Iterable<Position<E>> Arbol.java /Arboles/arbol line 38 Java Problem"
cabe aclarar que la listaSimplementeEnlazada es Iterable<E>.
otra cosa que me da error si pongo es:
"ListaSimplementeEnlazada<Position<E>> hijos=new ListaSimplementeEnlazada<Nodo<E>>();"
lo cual no entiendo, porque Nodo<E> implementa a Position<E>.
alguien sabe cual puede ser el error??
consultando a un amigo, este me dijo que el problema puede ser que java no permite combinar herencia con genericidad. no se bien el nombre de como se llama esta "combinacion", y este amigo tampoco estaba seguro si este es el problema. alguien sabe algo mas al respecto??
muchas gracias desde ya