(Sehr großes Problem) Listen als static in anderen Klassen verwendet

Mika34

Bekanntes Mitglied
Hallo,

Ich habe gerade ein extrem großes Problem. Ich habe ein großes Projekt, für meine Kenntnisse, geschrieben und nun muss ich auf Gutdeutsch gesagt:"Die ganze Kacke ausbaden", welche ich gemacht habe :(.
Ich habe mehrere static Listen in meinen Klassen, welche ich momentan über getter erreiche. Das sieht dann so aus:
Klasse TrackManager
Java:
private static ArrayList<Track> allRails = new ArrayList<>();

    public ArrayList<BlankTrack> getAllTracks() {
        return this.allTracks;
    }
Jetzt werden alle den Kopf schütteln. Ja, ich auch. Ich dachte das änder ich am Ende, aber nun sind es knapp über 2500 Zeilen Code und ich weiß einfach nicht wo ich ansetzen soll.
Klasse MainManager
Java:
    TrackManager trackManager = new TrackManager();
    private ArrayList<BlankTrack> allTracks = railManager.getAllTracks();
Bekomme ich das überhaupt noch hin richtig zu implementieren oder muss ich das gesamte Projekt neu aufsetzen????
Ich bin über jeden Ratschlag, jede Hilfe, einfach Alles tierisch dankbar, wenn ihr euch melden würdet
 

Mika34

Bekanntes Mitglied
Doch wenn ich in der Klasse mainManager auf
allRails.size() zugreifen will, dann gibt er mir eine leere Liste.. Obwohl diese gefüllt sein müsste
 

mihe7

Top Contributor
Ein leere Liste ist aber keine NPE. Das Problem wird sein, dass Du den TrackManager mehrfach instantiierst und dann natürlich jedesmal einen neue, leere Liste bekommst. Wenn dem so ist: TrackManager in MainManager als Instanzvariable anlegen, einmalig initialisieren und dann immer diese Instanz verwenden.
 

MoxxiManagarm

Top Contributor
Ich bin mir nicht sicher ob ich dich richtig verstehe, aber was du vielleicht suchst ist ein Singleton Pattern.

Java:
class TrackManager {
  private static TrackManager INSTANCE = null;

  private ArrayList<Track> allRails;

  public TrackManager() {
    allRails = new ArrayList<>();
  }

  public static TrackManager getInstance() {
    if (INSTANCE == null) INSTANCE = new TrackManager();

   return INSTANCE;
  }

  // dein getter etc.
}

Und dann in MainManager

Java:
TrackManager.getInstance().getAllTracks();



PS.: @mihe7 4 Uhr hier im Forum, du bist ja krass xD
 
X

Xyz1

Gast
@MoxxiManagarm Ein (generic) Singleton geht eigentlich so
Java:
import java.util.ArrayList;

public class TrackManager<E> {
	private static TrackManager<?> tm = null;
	private final ArrayList<E> LIST = new ArrayList<E>();

	private TrackManager() {
	}

	@SuppressWarnings("unchecked")
	public static final <E> TrackManager<E> newInstance() {
		if (tm == null) {
			tm = new TrackManager<E>();
		}
		return (TrackManager<E>) tm;
	}

	public ArrayList<E> getLIST() {
		return LIST;
	}

	public static void main(String[] args) {
		TrackManager<Integer> manager = newInstance();
		manager.getLIST().add(5);
		System.out.println(manager.getLIST());
	}
}


Der Konstruktor muss private sein und die Instanz wird klein geschrieben, da sie nur effektiv final ist.
 

Mika34

Bekanntes Mitglied
Ein leere Liste ist aber keine NPE. Das Problem wird sein, dass Du den TrackManager mehrfach instantiierst und dann natürlich jedesmal einen neue, leere Liste bekommst. Wenn dem so ist: TrackManager in MainManager als Instanzvariable anlegen, einmalig initialisieren und dann immer diese Instanz verwenden.
Sieht das in MainManager dann so aus:
Code:
    RailManager railManager = new RailManager();
    private ArrayList<BlankTrack> allRails = railManager.getAllRails();
 

temi

Top Contributor
Um das ganze auch noch threadsicher zu machen, wäre es am besten auf die lazy Initialization zu verzichten.

Java:
class TrackManager {
  private static final TrackManager INSTANCE = new TrackManager();

  private ArrayList<Track> allRails = new ArrayList<>();

  private TrackManager() { }

  public static TrackManager getInstance() {
    return INSTANCE;
  }

  // dein getter etc.
}

Aber ich denke, dass das Singleton hier nicht die Lösung der Wahl sein sollte.
 
Zuletzt bearbeitet:

Mika34

Bekanntes Mitglied
Ich verstehe leider nicht was ich nun tun soll. Erstelle ich nur eine Instanvariable ohne einen railManager zu erstellen, dann bekomme ich eine NPE, weil er den railManager nicht findet...
Habt ihr eine Idee
 

temi

Top Contributor
Ich verstehe leider nicht was ich nun tun soll. Erstelle ich nur eine Instanvariable ohne einen railManager zu erstellen, dann bekomme ich eine NPE, weil er den railManager nicht findet...
Habt ihr eine Idee
Du lieferst, bis auf einige kurze Codeausschnitte, halt zu wenig Informationen für uns. Alles was gesagt werden konnte, wurde bereits gesagt.

Zeig doch mal auf das nötigste eingedampften Code, wo die einzelnen Instanzen erzeugt werden und wie sie zusammenhängen. Wenigstens die obersten Hirarchiestufen davon.

So in der Art:
Java:
class TrackManager {
    private ArrayList<Track> allRails = new ArrayList<>();

    public ArrayList<BlankTrack> getAllTracks() {
        return this.allTracks;
    }
}

class MainManager {

    // ?????????????????????????????????

}


// deine main()
public static main(String[] args) {

    // ??????????????????????????????????

}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M sehr großes Byte Array Java Basics - Anfänger-Themen 3
D BigDecimal Ausgabe sehr lang. Java Basics - Anfänger-Themen 2
X Sehr schnelle agile Entwicklung Java Basics - Anfänger-Themen 1
C Verarbeitung von sehr großen Dateien Java Basics - Anfänger-Themen 52
P Erste Schritte Console - Sehr komische Ausgabe! Java Basics - Anfänger-Themen 3
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
M Suche Hilfe bei sehr kleinen Quelltexten Java Basics - Anfänger-Themen 2
M Welche externen Bibliotheken sind in Java sehr zu empfehlen? Java Basics - Anfänger-Themen 4
C Einlesen in Array von Textdatei sehr langsam Java Basics - Anfänger-Themen 7
R OutOfmemory Exception bei sehr großer Liste (Tomcat Webservice) Java Basics - Anfänger-Themen 4
H Sehr einfache Java-Programme Java Basics - Anfänger-Themen 24
Luk10 OOP Sehr allgemeine Schnittstelle Java Basics - Anfänger-Themen 19
S Input/Output Sehr langen String in Datei schreiben Java Basics - Anfänger-Themen 8
R ArrayList sehr viel schneller als Array? Java Basics - Anfänger-Themen 2
R Sehr einfache möglichkeit ArrayList oder Array zu initialisieren? Java Basics - Anfänger-Themen 8
R Sehr kleine doubles nicht in Exponentialdarstellung ausgeben Java Basics - Anfänger-Themen 3
B ABspeichern eines sehr grossen negativen Werts Java Basics - Anfänger-Themen 6
Beckenbauer Eine anstehende (sehr simple) Applikation in UML darstellen (Klassendiagramm) Java Basics - Anfänger-Themen 20
N Name zu sehr ähnlich??? Java Basics - Anfänger-Themen 12
E Reguläre Ausdrücke mit sehr variablen Eigenschaften Java Basics - Anfänger-Themen 2
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
Antoras Datei laden mit BufferedReader sehr langsam Java Basics - Anfänger-Themen 7
F Programm sehr langsam. Windows 7? Java Basics - Anfänger-Themen 23
S Eclipse .metadata ordner ist sehr gross! Java Basics - Anfänger-Themen 1
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
D Sehr großer String lässt sich nicht bearbeiten Java Basics - Anfänger-Themen 7
G Verzeichnis auslesen mit sehr sehr vielen Bildern Java Basics - Anfänger-Themen 6
E Methode sehr langsam und funktioniert teilweise nicht Java Basics - Anfänger-Themen 3
S JFileChooser öffnet Unterverzeichnisse sehr langsam Java Basics - Anfänger-Themen 2
G Sehr eigenartige Datumsprobleme. Java Basics - Anfänger-Themen 2
I Schulprojekt !sehr wichtig! Java Basics - Anfänger-Themen 6
M sehr weit verschachtelte XML-datei mit jdom auslesen Java Basics - Anfänger-Themen 4
G g.drawLine arbeitet sehr ungenau. Java Basics - Anfänger-Themen 4
G sehr kleine Dezimalzahlen (BigDecimal) falsch angezeigt Java Basics - Anfänger-Themen 5
T Erste Schritte (SEHR mühsam); Grafiktest Java Basics - Anfänger-Themen 5
F Java Applikation ProjectX startet sehr langsam Java Basics - Anfänger-Themen 3
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5
C Erste Schritte Muster ausgeben in der Konsole - großes V Java Basics - Anfänger-Themen 5
C Großes Problem Java Basics - Anfänger-Themen 6
J Großes Problem mit .jar Datei Java Basics - Anfänger-Themen 7
M Sortieralgoritmus für großes Array gesucht Java Basics - Anfänger-Themen 10
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
Spin Konto (großes Projekt für anfänger in Java ^^) Java Basics - Anfänger-Themen 7
A Kleines bzw. großes Problem ! Java Basics - Anfänger-Themen 2
W Komplexe Zahlen und großes Problem Java Basics - Anfänger-Themen 21
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
F Großes Problem: Vector-Übergabe Java Basics - Anfänger-Themen 7
T Variabel großes String-Array in ein String speichern Java Basics - Anfänger-Themen 3
P Einlesen von großes Datein optimieren durch Thread(s) Java Basics - Anfänger-Themen 7
P großes problem vector Java Basics - Anfänger-Themen 9
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben