Ich habe die Klassen Player
, PoliticCard
und ModelPlayer
. Sowohl Player
als auch PoliticCard
haben eine ArrayList
, um Farbwerte von enum Color
zu speichern. Ich möchte die Methode DrawCard()
schreiben, die einen Color
Wert von ArrayList
von PoliticCard
nimmt und es in der ArrayList
von Player
speichert.Java Eclipse schlägt vor, dass ich meine Methode statisch mache
Eklipse ließ mich die ArrayList
von PoliticCard
-static
ändern, aber in jedem anderen Beitrag habe ich gesehen static
nur für Konstanten verwendet wird, was hier nicht der Fall ist (die ArrayList
in PoliticCard
ist wird sich ändern ständig jedes Mal, jeder Spieler die verwendet Methode DrawCard()
) so ist eine statische ArrayList
in PoliticCard
wird ein Problem hier sein?
PS: Alle Klassen sind in verschiedenen Paketen (natürlich habe ich sie alle bei Bedarf importiert), hat es etwas damit zu tun?
public enum Color {
RED, GREEN
}
public class PoliticCard {
private Color cardColor;
private static ArrayList<Color> politicCards;
public PoliticCard() {
int i = 0;
while (i < 13) {
politicCards.add(Color.RED);
i++;
}
while (i < 26) {
politicCards.add(Color.GREEN);
i++;
}
}
public static ArrayList<Color> getPoliticCards() {
return politicCards;
}
}
public class Player {
private int id;
private ArrayList<Color> politicCards;
public Player(int id) {
this.setId(id);
}
public ArrayList<Color> getPoliticCards() {
return politicCards;
}
}
public class ModelPlayer {
public void Player(Player player) {
int i = 0;
while (i < 10) {
new Player(i);
}
}
public void DrawCard(Player player) {
int i = 0;
if (PoliticCard.getPoliticCards().get(i) != null) {
player.getPoliticCards().add(PoliticCard.getPoliticCards().get(i));
PoliticCard.getPoliticCards().remove(i);
} else {
i++;
player.getPoliticCards().add(PoliticCard.getPoliticCards().get(i));
PoliticCard.getPoliticCards().remove(i);
}
}
}
Sind Sie sicher, dass Sie nicht "final" statt "statisch" meinen? Außerdem * bitte * formatiere deinen Code vor dem Posten - im Moment ist es wirklich schwer zu lesen. –
Wenn die Liste eine Instanzvariable (nicht statisch) sein soll, benötigen Sie eine 'PoliticCard' _instance_ für den Zugriff darauf. Momentan greifen Sie über statischen Kontext/Klassennamen auf die Liste zu. –