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

Consulta sobre interface y clase pasada como parametro

Estas en el tema de Consulta sobre interface y clase pasada como parametro en el foro de Java en Foros del Web. Tengo la siguiente interface... Código: package java.util; public interface Map<K extends Object, V extends Object> { public static interface Entry<K extends Object, V extends Object> ...
  #1 (permalink)  
Antiguo 05/06/2012, 10:15
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 12 años, 11 meses
Puntos: 0
Consulta sobre interface y clase pasada como parametro

Tengo la siguiente interface...

Código:
  package java.util;

 public interface Map<K extends Object, V extends Object> {

    public static interface Entry<K extends Object, V extends Object>
 {

        public K getKey();

        public V getValue();

        public V setValue(V v);

        public boolean equals(Object o);

        public int hashCode();
    }

    public int size();

    public boolean isEmpty();

    public boolean containsKey(Object o);

    public boolean containsValue(Object o);

    public V get(Object o);

    public V put(K k, V v);

    public V remove(Object o);

    public void putAll(Map<? extends K, ? extends V> map);

    public void clear();

    public Set<K> keySet();

    public Collection<V> values();

    public Set<Entry<K, V>> entrySet();

    public boolean equals(Object o);

    public int hashCode();
 }
No entiendo porque indica que K y V son objetos, ¿No es esto
redundante?
Por otro lado ¿Al ser objetos puede ser cualquier tipo de objetos?


---------------------------------------------------------------------------------------------

Y la siguiente clase

Código:
  public static class RGItem
  {
    {
        private ReverseGeocode  revGeocode = null;

        public ReverseGeocode getReverseGeocode() {
            return this.revGeocode;
        }
    }

    private ReverseGeocode createAddress(Map<String,String> addrProps,
 double maxAddressDistanceKM)
    {
        //Aqui va el codigo que procesa los parametros

    }
 }
No entiendo el tipo de variable ReverseGeoCode, y que ocurre al pasar
como parámetro una clase como lo es Map. ¿Acaso llama a la clase Map y
lo que esta devuelva se toma como parámetro en el método createAddress?

Como se habrán dado cuenta por mis preguntas, recién empiezo con JAVA y ya me dieron un código bastante denso para modificar; disculpen mi ignorancia en el tema.
  #2 (permalink)  
Antiguo 05/06/2012, 16:05
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: Consulta sobre interface y clase pasada como parametro

Bueno, estás en presencia de la interfaz que implementan las clases de Map, como HashMap. Este tipo de código es un poco extraño al principio, pero no temas, siguen tratandose de clases y objetos.

Código Java:
Ver original
  1. public interface Map<K extends Object, V extends Object>

crea una interfaz llamada "Map", esta interfaz al igual que una ArrayList o un Vector, deben ser genéricos, ya que a diferencia de nustras clases típicas aquí se podrán contener objetos de todo tipo. Para poder coneter objetos de todo tipo basta con usar la superclase de todos, es decir, "Object", pero si creas una clase cuyos atributos sean Object entonces tendrás que hacer cast cada vez que necesites de los objetos en su estado original.

Por ejemplo si yo sé que tu puedes sostener objetos de 20 kilos, te pones tras una cortina y me preguntas qué estás sosteniendo, pues la realidad es que no tengo ni idea, me tendrías que decir que es una manzana o algo así y yo haría acto de fé para saber qué objeto tienes. Pues lo mismo le pasa a java si le dices: "vas a contener objetos y cuando te los pida quiero que me los des", java no sabrá qué es a menos que se lo digas.

Bueno pues esto es lo que buscan este tipo de declaraciones, le estamos diciendo a java que contendrá objetos de tipo K o V (convención proveniente de Key y Value para la interfaz Map), pues con esto java no se preocupará por el tipo que reciba, pues ahora tiene etiquetas para sus nombres, cuando tú creas una instancia de Map (una vez implementada la interfaz) le deberás decir a java qué tipo de objetos contendrá como:

Código Java:
Ver original
  1. Map<String,String> addrProps

Ahí y hasta ese momento los objetos toman un tipo fijo. Entonces todos los métodos que dicen yo devuelvo K ahora dirán, yo devuelvo String. En realidad se hace el cast pero ya no de forma tradicional y peligrosa, ahora le das la oportunidad al compilador de verificar que efectivamente reciba ese tipo de datos evitando así al máximo errores en tiempo de ejecución por un cast fallido.
  #3 (permalink)  
Antiguo 05/06/2012, 19:24
 
Fecha de Ingreso: mayo-2011
Mensajes: 102
Antigüedad: 12 años, 11 meses
Puntos: 0
Respuesta: Consulta sobre interface y clase pasada como parametro

Gracias!
Estoy tratando de modificar una de las clases de OpenGTS y se me hace bastante denso entender las relaciones que posee el codigo, son unos 64MB.

Ahora entiendo un poco mas como funciona, espero resolverlo pronto, es decir entender como estan conectadas las distintas clases porque la modificacion que necesito hacer es bastante sencilla, solo necesito capturar un string, parsearlo y devolver los valores.

Solo me falta entender en que parte del codigo debo hacerlo y cual string debo capturar.

Saludos y gracias de nuevo.

Etiquetas: clase, class, interface
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 12:58.