Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Java verlorene Objekte wiederfinden?

Gibt es eine Möglichkeit in der Programmiersprache Java verlorene Objekte wiederzufinden, also man kennt nicht die Adresse (weiß aber das Objekt wird noch irgendwo im Programm verwendet) - z.B. gäbe es eine Funktion getAllObjects();?

public class Testprogramm {

public static void main ( String[] args )

{

temp1 = new Meinobjekt();

temp2 = new Meinobjekt();

}

}

Gibt es nun im Konstruktor bei temp2 die Möglichkeit irgendwie an alle Instanzen von Meinobjekt zu kommen, die schon initiert wurden?

3 Antworten

Bewertung
  • Corry
    Lv 6
    vor 1 Jahrzehnt
    Beste Antwort

    Beispiel:

    Global definiert:

    myClass a = new myClass();

    Load-Ereignis:

    if(!Page.Postback)

    {

    a = new myClass();

    }

    Click-Ereignis einer Schaltfläche

    a.Textboxwert= Textbox.Text

    <det ist falsch>

    if (! IsPostback)

    ViewState["a"] = new myClass();

    else

    a = ViewState["a"] as myClass;

    Im Click Event:

    a.Textboxwert= Textbox.Text;

    ViewState["a"] = a;

    <so geht's>

    vielleicht hilft es dir weiter

  • vor 1 Jahrzehnt

    Alwin, in java gibt es keine globalen Variablen. Und Destruktoren auch nicht.

    Du könntest eine statische ArrayList machen, an die sich die Instanz bei der Ausführung des Konstruktors selbst hinzufügt.

    Wenn du dann eine statische Methode schreibst, die die ArrayList zurückgibt, dann weisst du Bescheid.

  • vor 1 Jahrzehnt

    Ich würde das so lösen, dass ich im Konstruktor eine Markierung (das kann sich auf ein einziges Bit beschränken) in einer globalen Variablen setzen lasse, und es im Destruktor wieder löschen. Du musst das halt dann "per Hand" kontrollieren, welche Objekte gerade aktiv sind.

    Eine getAllObjects()-Funktion hört sich zwar sinnvoll an, aber der Rechner müsste dann die gesamte Objekthierarchie durchrödeln, und das kostet Rechenzeit und Speicher. Und davon braucht die ganze objektorientierte Programmiererei ja weiß Gott schon genug! (Ich halte OOP sowieso für einen konzeptionellen Fehler; aber mich fragt ja keiner.)

Haben Sie noch Fragen? Jetzt beantworten lassen.