Java - Compartir misma lista entre dos clases

 
Vista:

Compartir misma lista entre dos clases

Publicado por Daniel (1 intervención) el 11/09/2019 21:22:36
Hola buenas a todos,

Tengo un problema ya que no se que es mejor hacer. Tengo una clase principal que es Main con dos metodos. Y luego tengo una clase que es Juego, dentro de cada instancia de juego tengo una lista con los jugadores pero quiero que desde un evento al entrar un jugador al juego pueda el evento también acceder a esa lista.

En resumen, quiero acceder de dos clases distintas a la misma variable y no se donde poner la lista, ya que no tendría sentido meter simplemente la lista en una nueva clase y hacerla singleton.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class Main extends Plugin {
    private List<Juego> juegos = new ArrayList<>();
 
    @Override
    public void onEnable() {
        crearJuego();
    }
 
    private crearJuego() {
        List<Jugador> jugadores = new ArrayList<>();
        juegos.add(new Juego(jugadores));
        new PlayerJoinListener(jugadores);
    }
 
}
 
public class Juego {
    private List<Jugador> jugadores;
    public Juego(List<Jugador> jugadores) {
        this.jugadores = jugadores;
    }
    public void runTask() {
        // Hacer cosas con los jugadores
    }
}
 
public class PlayerJoinListener extends Listener {
    private List<Jugador> jugadores;
    public Juego(List<Jugador> jugadores) {
        this.jugadores = jugadores;
    }
    @Override
    public void onJoin(PlayerJoinEvent event) {
        Jugador jugador = event.getJugador();
        // meter el jugador en la lista de jugadores
        jugadores.add(jugador);
    }
}
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

Compartir misma lista entre dos clases

Publicado por Rodrigo (623 intervenciones) el 16/09/2019 12:30:38
Haz que la clase Juego sea la Unica que tenga la lista de jugadores. Ni el main, ni El listener ven la lista. Haz un metodo agregarJugador en la clase Juego.
Inicializa el listener con una referencia a Juego, e invoca El metodo agregarJugador desde ahi.
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