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.
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


0