Java - Genéricos

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Genéricos

Publicado por José Ramón (7 intervenciones) el 17/12/2020 16:08:59
Dado el siguiente código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package pruebas;
 
class Radio {
    private double frequency = 1.1;
//insert appropriate getter and setter
}
 
class TV {
    private int channel = 5;
//insert appropriate getter and setter
}
 
public class TestClass {
    public static void main(String[] args) {
	TV t = new TV();
	Radio r = new Radio();
	reset(t);
	reset(r);
	System.out.println(r.getFrequency()); // should print 0.0
	System.out.println(t.getChannel()); // should print 0
    }
}

¿Cúal es el código que debería implementar para que un mismo método me haga un reset de los atributos channel y frequency y los atributos de otras futuras clases de dispositivos a añadir?

No veo la manera de hacerlo sin tener que andar haciendo castings y modificando el método cada vez que añada una clase nueva...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Genéricos

Publicado por Rodrigo (623 intervenciones) el 17/12/2020 16:19:29
No se si esto te sirve, pero andabas en busca de ideas y aqui hay una:

1. define una interface que tenga el metodo reset(),
2. haz que cada clase implemente esa interfaz,
3. haz que el metodo reset del main reciba un objeto que implemente la interfaz y que invoque el metodo reset() de esa interface.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Genéricos

Publicado por Rodrigo (623 intervenciones) el 17/12/2020 16:37:13
Algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
interface Resetable {    // 1. define una interfaz que tenga el metodo reset
  void reset();
}
 
class Radio implements Resetable { // 2. haz que cada clase implemente la interface
    private double frequency = 1.1;
 
    void reset() { // <-- 2.
         frequency = 0.0;
    }
}
 
class TV implements Resetable { // 2. haz que cada clase implemente la interface
    private int channel = 5;
 
    void reset() { // <-- 2.
         channel = 0;
    }
}
 
public class TestClass {
    public static void reset(Resetable r) { // 3. haz que el metodo reciba un objeto que implemente la interface
        r.reset();  // .. y que invoque el metodo reset de esa interface
    }

El resto queda igual y no necesita modificarse con cada clase que se agregue,
Cada clase implementa la interface y este codigo sigue funcionando asi

1
2
3
4
5
6
7
8
9
10
// sin modificaciones ...
public static void main(String[] args) {
	TV t = new TV();
	Radio r = new Radio();
	reset(t);
	reset(r);
	System.out.println(r.getFrequency()); // should print 0.0
	System.out.println(t.getChannel()); // should print 0
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Genéricos

Publicado por José Ramón (7 intervenciones) el 17/12/2020 22:55:50
A un pelo estuve de dar con la misma solución pero ya estaba llevandome demasiado tiempo.
Este ejemplo me deja mucho más claro el uso del polimorfismo.

Muchas gracias por la ayuda :).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar