Foros del Web » Programación para mayores de 30 ;) » Java »

problema con conversion

Estas en el tema de problema con conversion en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/02/2010, 17:14
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta problema con conversion

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
  #2 (permalink)  
Antiguo 11/02/2010, 01:55
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: problema con conversion

Parece que estás trabajando con interfaces como si fuesen clases heredadas... y eso no va así

http://proiektutaldea.wordpress.com/...ce-y-herencia/

http://www.webtaller.com/construccio...tiple_java.php

http://elvex.ugr.es/decsai/java/pdf/AC-interfaces.pdf
  #3 (permalink)  
Antiguo 11/02/2010, 09:55
 
Fecha de Ingreso: febrero-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problema con conversion

si lo decis por que pongo
ListaSimplementeEnlazada<Position<E>> siendo Position<E> una interfaz, eso es valido.
lo que no es valido es la inicializacion de una variable de tipo interfaz, por ejemplo:
Position<String> a=new Position<String>().
tambien es valido, incluso, inicializar una clase en la que sus objetos sean de un tipo de interfaz, ejemplo:
ListaSimplementeEnlazada<Position<E>> b=new ListaSimplementeEnlazada<Position<E>>() ya que no estamos inicializando una variable de tipo interfaz. esto se hace para que en la lista podamos meter a todas las variables de tipo clase que implementen a Position<E>.

capaz que te referis a otra cosa, pero estoy seguro que no es problema de interfaz/clase heredada.
Position<E> es una interfaz, y tiene que ser asi. y Nodo<E> es una clase que la implementa. si queres todo el codigo te lo paso, pero no lo queria poner para no hacer mucho lio.

Etiquetas: conversion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:10.