voy a tratar de ser lo mas claro posible, ya que hay algunas clases de por medio.
Código:
la clase Position<E> no es muy importante, solo es importante saber que Nodo<E>implementa Position<E>.public class Nodo<E> implements Position<E> { ... protected ListaSimplementeEnlazada<Nodo<E>> hijos; ... public ListaSimplementeEnlazada<Nodo<E>> getHijos() {return hijos;} ... }
la ListaSimplementeEnlazada, si bien la uso, tampoco es de importancia, es una Lista de tipo generico E.
Código:
el metodo checkPosition(v) devuelve un Nodo<E>, y tira excepcion si no es valido (por eso la InvalidPositionException).public class Arbol<E> implements Tree<E> { ... public Iterable<Position<E>> children(Position<E> v) throws InvalidPositionException {return checkPosition(v).getHijos();} ... }
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