Java: Wie kann ich Variablen aus verschiedenen Klassen speichern?

3 Antworten

Dein Code ist komisch formatiert, unnötig kompliziert, und hat keine klaren Konventionen. Hier die grundlegenden Java-Konventionen:

camelCase - Methods and Variables
PascalCase - Classes, Enums and Interfaces
UPPER_SNAKE_CASE - Constants
lowercase - Packages and Primitives

Dein Problem scheint darin zu liegen, dass du nicht weißt, wie man die Variablen anderer Klassen aufruft. Das geht entweder mit instanceOfObject.variable oder Object.variable, je nach dem, ob die Variable statisch ist. Alternativ mache dir einen getter.

Woher ich das weiß:Hobby – Ich programmiere in meiner Freizeit mit Java.

Einfaches Beispiel:

class Teacher {
  private String answer = "Some answer ...";

  public String getAnswer() {
    return answer;
  }
}

class Student {
  public void askForAnAnswer(Teacher teacher) {
    String answer = teacher.getAnswer();
  }
}

// main:
Student student = new Student();
Teacher teacher = new Teacher();
student.askForAnAnswer(teacher);

Wie du siehst: Der Geber besitzt eine Methode, die den gekapselten Wert (answer) zurückgibt. Der Nehmer muss einmal eine Referenz auf den Geber haben, dann kann er über diese Methode den gewünschten Wert einfordern.

Diese Implementation richtet sich nach dem Data Hiding-Prinzip bzw. Kapselung (einem der Kerneigenschaften der OOP). Hier kannst du eine kurze Erklärung dazu lesen.

Bei deinem gezeigten Code würde ich etwas mehr für Ordnung sorgen. Wie schon Yoshi32 schrieb, hast du da einen Mix aus Schreibarbeiten verbaut, die dein Programm schlechter lesbar machen.

Variablen und Methodennamen sollten stets mit einem Kleinbuchstaben beginnen, sodass man sie von Klassen unterscheiden kann. In dieser Zeile bspw.

if (Save.exists()) {

wüsste man an der Stelle nicht sofort, dass es sich hier um eine Variable und keine Klasse (mit statischer Methode) handelt, wenn man nicht zuvor die Deklaration von Save gesehen hat. Auch der Name ist nicht so recht eindeutig. Es geht nicht hervor, dass es sich hier doch eigentlich nur um ein File-Objekt für einen Ordner handelt.

Die beiden ineinander verschachtelten try-catch-Blöcke würde ich vermutlich zusammenfassen, denn die Ausnahmefälle, die geworfen werden können, sind ausreichend verschieden.

try (OutputStream stream = new FileOutputStream(config)) {  
  stream.write(LebenS.getBytes());
  stream.close();
}
catch (FileNotFoundException | IOException ex) {
  ex.printStackTrace();
}

du kannst Variablen einer anderen Klasse folgendermaßen aufrufen:

MeineKlasse.variablename;

wenn die Variable in der "MeineKlasse" nicht statisch ist, musst du vorher eine Instanz der Klasse erstellen:

MeineKlasse test = new MeineKlasse();
test.variable;

natürlich muss die Variable in der "MeineKlasse" definiert sein und bestenfalls gesetzt sein.

---

Warum schreibst du deinen code so:

    if (Save.exists()) {

    } else {
        Save.mkdirs();
    }

und nicht einfach so?:

    if (!Save.exists()) Save.mkdirs();

macht das gleiche...

Woher ich das weiß:Hobby – Erfahrung seit 2021 mit Java Entwicklung (Embedded/ Backend)