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

M

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
 
M

Mika34

Bekanntes Mitglied
Dann bekomme ich überall NPE geworfen und da weiß ich einfach nicht weiter....
 
mihe7

mihe7

Top Contributor
Wenn Du das Beispiel oben nimmst, kannst Du durch das Entfernen von static keine NPE bekommen.
 
M

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

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

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

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

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:
Thallius

Thallius

Top Contributor
Ein singleton zu verwenden weil man das Prinzip OOP (noch) nicht verstanden hat ist das dümmste was man machen kann.
 
M

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

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
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 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
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 4
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
S Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
L Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
J Problem mit Array: 2 Klassen Java Basics - Anfänger-Themen 2
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
F Problem mit Listen Java Basics - Anfänger-Themen 5
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
J Problem bei Umrechnung von Hex in Bin Java Basics - Anfänger-Themen 4
W Problem bei Programmierung von Monte-Carlo-Integration Java Basics - Anfänger-Themen 12
C Java Methoden "Parameter" Problem Java Basics - Anfänger-Themen 16
T Bruchrechner Problem Java Basics - Anfänger-Themen 16
M Problem mit meinem Programm Java Basics - Anfänger-Themen 6
pkm Problem mit der JSP-Syntax Java Basics - Anfänger-Themen 2
J Rückgabe-Problem Java Basics - Anfänger-Themen 10
D Problem mit der Serialisierung Java Basics - Anfänger-Themen 31
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Anzeige

Neue Themen


Oben