3 Stimmen

Wie kann man eine Variable klassenübergreifend in Java freigeben, ich habe es mit static versucht, hat nicht funktioniert

Die Klasse Testclass1 hat eine Variable, deren Wert sich bei einer bestimmten Ausführung ändert. Jetzt gibt es im gleichen Paket die Klasse Testclass2. Wie kann ich auf den aktualisierten Wert (von Testclass1 aktualisiert) der Variablen in Testclass2 zugreifen? Ich habe es versucht, aber es hat nicht funktioniert.

Hinweis: Testclass1 und Testclass2 sind zwei separate Dateien im selben Paket, ich habe versucht, class1 zuerst in eclipse und dann class2 auszuführen. Aber Klasse2 hat 0 gedruckt;

public class Testclass1 {
    public static int value;
    public static void main(String[]args)
    {
        Testclass1.value=9;
        System.out.println(value);
    }
}

----------------

public class Testclass2 {
    public static void main(String[]args)
    {
        System.out.println(Testclass1.value);
    }
}

9voto

Michael Borgwardt Punkte 334642

Ihr Problem ist nicht die klassenübergreifende gemeinsame Nutzung von Werten, sondern die gemeinsame Nutzung von Werten bei nachfolgenden Programmausführungen. Dazu müssen Sie den Wert irgendwo festhalten. Normalerweise werden dafür Dateien oder Datenbanken verwendet.

1voto

Swaranga Sarma Punkte 12575

In Ihrem ersten Programm müssen Sie etwas wie folgt schreiben

public class Testclass1 {
    public static int value;
    public static void main(String[]args)
    {
        try
        {
            Testclass1.value=9;
            System.out.println(value);
            new FileWriter("test.txt", false).append(String.valueOf(value));
        }
        catch(Exception ex)
        {
            //do something
        }            
    }
}

Rufen Sie dann Ihr zweites Programm nach dieser Änderung auf:

public class Testclass2 {
    public static void main(String[]args)
    {
        try
        {
            Scanner s = new Scanner(new File("test.txt");
            Testclass1.value = s.nextInt();
            System.out.println(Testclass1.value);
        }
        catch(Exception ex)
        {
            //do something
        }
    }
}

Es gibt ein paar Dinge zu beachten:

  1. Stellen Sie sicher, dass Sie die Programme aus demselben Verzeichnis ausführen.
  2. Sie müssen die .class-Datei von TestClass1 in diesem Verzeichnis haben, bevor Sie TestClass2 ausführen.
  3. Außerdem wäre es eine gute Praxis, die FileWriter sobald Sie fertig sind.

0voto

fastcodejava Punkte 37539

Wenn Sie die Möglichkeit haben main Methode der TestClass1 auszuführen, wird es funktionieren. Der Grund, warum es nicht funktioniert, ist, dass main Methode der TestClass1 nie ausgeführt und der Wert daher nie gesetzt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X