Variablen in Klasse modifizieren

Status
Nicht offen für weitere Antworten.

michi2

Bekanntes Mitglied
Hallo,
Kann mir jemand sagen warum im folgendem Version 2 geht, Version 1 aber nicht?

Code:
class A
  {
  boolean x = false;
  A einAObj = new A();
  }
class B
  {
  methode()
    {
    //Version 1 - Geht nicht:
    A zweitesAObj = A.einAObj;
    zweitesAObj.x = true;
    A.einAObj = zweitesAObj:
  
    //Version 2 - Geht:
    A.einAObj.x = true;
    }
  }
 

André Uhres

Top Contributor
Du meinst wohl sowas:
Code:
class A {
    private boolean x = false;
    private A einAObj = new A();
    class B {
        private void methode() {
            A zweitesAObj = einAObj;
            zweitesAObj.x = true;
            einAObj = zweitesAObj;
            einAObj.x = true;
        }
    }
}
Als innere Klasse hat B zugriff auf die Variablen von A.
 

michi2

Bekanntes Mitglied
Nein? Ich meine das was oben steht... und will wissen warum "Version 1" nicht geht, "Version 2" aber schon!?
 
S

SlaterB

Gast
inwiefern funktioniert es denn nicht, außer dass in der von dir geposteten Version viele Fehler sind?

Code:
class A {
    boolean x = false;

    static A einAObj = new A();

    public static void main(String[] args) {
        new B();
    }

}

class B {
    public B() {
        A zweitesAObj = A.einAObj;
        zweitesAObj.x = true;
        A.einAObj = zweitesAObj;
        System.out.println(A.einAObj.x);
    }
}
Ausgabe bei mir: true
 
G

Gast

Gast
hast zwar nicht die fehlermeldung gepostet aber
A zweitesAObj = A.einAObj;

du versuchst hier zweitesAObj die referenz von der public static variable einAObj zuzuweisen. Aber einAObj ist garkeine static variable von A sondern eine Instanzvariable.
 

michi2

Bekanntes Mitglied
Ja, sorry, das static von einAObj hab ich oben vergessen, gehört natürlich rein...

@SlaterB: Ja, so hab ich das auch aber bei mir giebt das false!?
Hier mal ein Teil vom Orginal-code (entspricht class B):
Code:
class cfile
   {
   boolean gespeichert = false;   //wert für X, wird von ausen gesetzt

   void laden()  //wird aufgerufen
      {
      Michis_Editor me1 = Michis_Editor.e1;    //Michis_Editor entspr. A
      System.out.println("me1.gespeichert: " + me1.gespeichert);       //Ausgabe: false
      System.out.println("gespeichert: " + gespeichert);                    //Ausgabe: true

      //...
      me1.gespeichert = gespeichert;
      //...

      Michis_Editor.e1 = me1;
      System.out.println("Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert);     //Ausgabe: false

      Michis_Editor.e1.gespeichert = gespeichert;
      System.out.println("Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert);     //Ausgabe: true
      }
   //....
   }
 
S

SlaterB

Gast
was meinst du?, ergibt mein Code bei dr true oder false?
kann ja nur true rauskommen,

zu deinem Code:
ändere mal
Code:
Michis_Editor.e1 = me1;
      System.out.println("Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert);     //Ausgabe: false
in
Code:
Michis_Editor.e1 = me1;
      System.out.println("me1.gespeichert: " + me1.gespeichert);     //Ausgabe: ?
      System.out.println("Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert);     //Ausgabe: false
nur wenn bei me1 true ausgegeben wird darfst du dich wundern,
das wird aber nach allen Regeln der Programmierung nicht sein ;)
insofern ist dann interessant was bei ... noch so alles passiert,

solche Probleme sind durchaus trickreich,
da greife ich immer auf die hasscode-Operation zurück, um zu vergleichen, welches Objekt überhaupt gerade benutzt wird,

alternativ bietet sich eine Laufvariable an, jedes Objekt bekommt eine Nummer, 1, 2, 3 ..,
dann mache e1 private, ersetze alle Zugriffe durch
setE1(boolen newE1) {
System.out.println("Object "+hashcode() oder number+", e1 gesetzt auf: "+newE1);
e1 = newE1;
}

und es kann langsam nichts mehr schiefgehen,
so findet man jeden Fehler
 

michi2

Bekanntes Mitglied
Hm... Hab den zweiten Teil nicht verstanden, sorry...

Die Ausgabe:
[Edit: siehe unten]

Der komplette Code:
Code:
void laden()
   {
   Michis_Editor me1 = Michis_Editor.e1;
   System.out.println("cf1: me1.gespeichert: " + me1.gespeichert);
   System.out.println("cf1: gespeichert: " + gespeichert);
   
   
   me1.suchen = suchen;
   me1.suchindex = suchindex;
   me1.einausgabedatei = einausgabedatei;
   me1.dateiname_Name = dateiname_Name;
   me1.dateiname_Path = dateiname_Path;
   me1.dateiname_gueltig = dateiname_gueltig;
   me1.dokSearcher = dokSearcher;
   me1.search_up = search_up;
   me1.bgenau = bgenau;
   me1.bcursor = bcursor;
   me1.aktText = aktText;
   me1.undoTextNr = undoTextNr;
   me1.last_used = last_used;
   me1.item1_6_ = item1_6_;
   me1.item2_11c_ = item2_11c_;
   me1.undoNumber = undoNumber;
   me1.markerNumber = markerNumber;
   me1.gespeichert = gespeichert;
   me1.TA = TA;
   me1.p_neu = p_neu;
   me1.p_font = p_font;
   me1.scroll = scroll;
   
   //p_neu.remove(me1.textanzeige);
   //System.out.println("Rammstein - " + me1.textanzeige.param());
   me1.textanzeige = textanzeige;
   //System.out.println("Rammstein2 - " + me1.textanzeige.param());
   me1.textanzeige.setText(aktText);
   //System.out.println("blabla aktText: " + aktText + " TAtext: "+ me1.textanzeige.getText());
   me1.textanzeige.setCaretPosition(cursorposition);
   //p_neu.add(me1.textanzeige);
   me1.fontAktualisieren();
   
   
   if(!dateiname_Name.equals(""))
      me1.e1.setTitle("Michi's Editor 3 - " + dateiname_Name);
   else
   me1.e1.setTitle("Michi's Editor 3");
   //      System.out.println("load - aktText: "+ aktText);
   
   System.out.println("d");
   
   Michis_Editor.e1 = me1;
   System.out.println("cf2a: me1.gespeichert: " + me1.gespeichert);     //Ausgabe: ?
   System.out.println("cf2b: Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert);
   
   Michis_Editor.e1.gespeichert = gespeichert;
   System.out.println("cf2c: Michis_Editor.e1.gespeichert: " + Michis_Editor.e1.gespeichert + "\n");
   }

PS: ja ich weiß der Code ist unübersichtlich, wird verbessert...
 
S

SlaterB

Gast
der zweite Teil meines vorherigen Posts handelte von der Frage :
was bedeutet es wenn true oder false ausgegeben wird bei der Betrachtung mehrerer Objekte?,
wie kann man genauer vorgehen?

-------

spielt ja im Moment keine Rolle, deine zuletzt gepostete Ausgabe ist eine andere als zuvor und vor allem scheint kein Fehler aufzutreten?

me1 ist erst true, wird dann auf false gesetzt und bleibt dann auf false,
noch ein Problem vorhanden?
 

michi2

Bekanntes Mitglied
Sorry, nein das Problem ist noch da! Ich hab einen falschen aoutput gepostet, der Fehler tritt hier auf:
me1.gespeichert: false
cf1: me1.gespeichert: false
cf1: gespeichert: true
d
cf2a: me1.gespeichert: false
cf2b: Michis_Editor.e1.gespeichert: false
cf2c: Michis_Editor.e1.gespeichert: true
 

michi2

Bekanntes Mitglied
Problem gelöst:
Hab nicht bedacht das auch JTextArea.setText(String txt) die Actionlistener auslöst... :oops:

Thy an alle!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
J Variablen mit einer anderen Klasse bekannt machen Java Basics - Anfänger-Themen 7
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
P Klassen Variablen von einer Klasse zur anderen Java Basics - Anfänger-Themen 5
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
J Eigene Klasse für die Variablen? Java Basics - Anfänger-Themen 3
M Variablen übergeben an andere Klasse Java Basics - Anfänger-Themen 9
J Threads Variablen Wert aus anderer Klasse auslesen Java Basics - Anfänger-Themen 4
J Variablen überschreiben innerhalb einer Klasse Java Basics - Anfänger-Themen 7
X OOP Methoden und Variablen in anderer Klasse verwenden Java Basics - Anfänger-Themen 5
F Variablen Übergabe von eingelesenen Variablen in neue Klasse Java Basics - Anfänger-Themen 15
F Klassen Klasse in Klasser - Zugriff auf Variablen Java Basics - Anfänger-Themen 8
L auslesen einer Variablen eines Objekt welches "Eigentum" eines Objektes der selben Klasse ist. Java Basics - Anfänger-Themen 12
H auf variablen ausserhalb der ausgeführten klasse zugreifen Java Basics - Anfänger-Themen 3
G Zugriff auf private Variablen einer inneren Klasse Java Basics - Anfänger-Themen 5
N variablen vom typ einer abstrakten Klasse Java Basics - Anfänger-Themen 5
J Von einer Klasse auf Variablen der anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
M Variablen einer Klasse zu durchlaufen möglich? Java Basics - Anfänger-Themen 5
M Übergabe von Variablen in eine Klasse Java Basics - Anfänger-Themen 13
P Variablen in einer anderen Klasse ueberschreiben Java Basics - Anfänger-Themen 2
A in abstract Klasse private Variablen Java Basics - Anfänger-Themen 3
M Zugriff auf Variablen aus anderer Klasse Java Basics - Anfänger-Themen 7
C auf Variablen von Methoden einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 7
G variablen in eine andre klasse übergeben (andere Datei) Java Basics - Anfänger-Themen 1
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
T variablen klassen übergreifend Java Basics - Anfänger-Themen 12
T Variablen Java Basics - Anfänger-Themen 1
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
M Aufsummieren von variablen Wertegrößen Java Basics - Anfänger-Themen 17
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
C Konstruktoren und Variablen Java Basics - Anfänger-Themen 42
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Variablen Variablen übertragen ohne Klassen Java Basics - Anfänger-Themen 5
B Methoden Methoden haben kein Zugriff auf variablen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
Arif Vererbung Methodenvererbung mit finalen Variablen Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
M Java Instanz-Variablen ? Java Basics - Anfänger-Themen 3
B Variablen von Methoden übertragen Java Basics - Anfänger-Themen 2
M Variablen umbenennen Java Basics - Anfänger-Themen 1
T Körper Brechnung - Lokale Variablen in Methoden übergeben Java Basics - Anfänger-Themen 10
P Zugriff auf Variablen anderer Klassen in Greenfoot Java Basics - Anfänger-Themen 1
mars90 Fehler in der Variablen Deklaration Java Basics - Anfänger-Themen 8
E Variablen in formatierter Ausgabe Java Basics - Anfänger-Themen 15
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
M Komisches Verhalten der Variablen Java Basics - Anfänger-Themen 6
H Variablen Multiplikation einer inkrementierten Variablen Java Basics - Anfänger-Themen 5
scratchy1 Variablen vertauschen wenn Bedingung "umgedreht" wird Java Basics - Anfänger-Themen 40
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
A Übergreifende Variablen Java Basics - Anfänger-Themen 17
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
P Variablen Variablen voneinander abhängig Java Basics - Anfänger-Themen 54
F Liste nach einer Variablen sortieren Java Basics - Anfänger-Themen 6
L Variablen in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
M For-Schleife durch zwei versch. Variablen begrenzen Java Basics - Anfänger-Themen 27
J Klassen Variablen in andere Klassen oder Methoden übernehmen Java Basics - Anfänger-Themen 1
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
temi Redundante Variablen Java Basics - Anfänger-Themen 29
Aprendiendo Zweifel mit versteckter Variablen Java Basics - Anfänger-Themen 16
L Variablen einmal nur zu weisen Java Basics - Anfänger-Themen 62
D Statische Variablen/Methoden Java Basics - Anfänger-Themen 3
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
M Listener für Button - Wert von Variablen verändern Java Basics - Anfänger-Themen 14
S Vererbung Variablen klassenübergreifend nutzen Java Basics - Anfänger-Themen 42
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
E 2 Probleme - Datum & private finale Variablen Java Basics - Anfänger-Themen 5
Aruetiise Variablen JFrame und Variablen Java Basics - Anfänger-Themen 3
L Variablen dekleration + reset Java Basics - Anfänger-Themen 16
T Übernahme einer Variablen im ActionListener/ActionEvent Java Basics - Anfänger-Themen 2
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
C Variablen von einem JFrame in einen anderen übertragen Java Basics - Anfänger-Themen 3
P Interface Variablen-Inhalte werden nicht übergeben Java Basics - Anfänger-Themen 3
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
S Variablen Flexible Variablen Namen Java Basics - Anfänger-Themen 3
R Erste Schritte 3 Variablen hochzählen lassen Java Basics - Anfänger-Themen 1
RowdyN Variablen Variablen beliebig benennen? Java Basics - Anfänger-Themen 6
S OOP Variablen zwischen mehreren Klassen Java Basics - Anfänger-Themen 11
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
H Variablen einer Schleife zwischenspeichern Java Basics - Anfänger-Themen 2
H Objekt überschreibt Variablen vorheriger Objekte Java Basics - Anfänger-Themen 2
P Variablen in Excel speichern Java Basics - Anfänger-Themen 6
S PHP Aufruf mit mehreren Variablen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
S ActionListener und Statische Variablen Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
L Vergleich zweier Variablen, mit Abweichung Java Basics - Anfänger-Themen 3
P Variablen einer Methode in andere Method übergeben Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben