Methodenaufruf von wem?

Status
Nicht offen für weitere Antworten.

MQue

Top Contributor
Hallo,

ich hab noch so eine blöde Frage und zwar habe ich in einer Klasse eine Methode setArrayEintrag(int[] Array). Diese Methode löst ein fireUpdate aus (observer) um die GUI zu aktualierenen, wenn neue Daten empfangen wurden.
diese Methode rufe ich 1. von der Schnittstellen- Klasse auf und 2. von den Komponenten (JButton, JTextField).

Mein Problem ist jetzt, dass ich, wenn die Methode von einer Komponente aufgerufen wird, das fireUpdate in der Methode nihct machen möhcte und wenn die Methode von der Schnittstellen- Klasse kommt, dann soll fireUpdate in der Methode setArrayEintrag aufgerufen werden.

Meine Frage wäre jetzt, kann ich irgendwie unterscheiden, wer die Methode setArrayEintrag(int[] Array) aufruft?

vielen Dank für Eure Antworten!!

lg
Michl
 

Marco13

Top Contributor
Prinzipiell kann man das rausfinden, aber es sollte nicht notwendig sein. Wie wäre es, wenn du zwei methoden anbietest? Oder der Methode ein zusätzliches boolean spendierst, das besagt, ob sie das fireUpdate machen soll? Aber ich habe schon eine Vermutung: WARUM soll das FireUpdate in manchen Fällen nicht gemacht werden? Endlosrekursion? :wink:
 
S

SlaterB

Gast
das einfachste ist ein boolean-Parameter, einer gibt true an, der andere false

aufwendig ist, den aktuellen StackTrace anzuschauen:
Thread.currentThread().getStackTrace()
(bekannt von Exceptions, siehe API für Details)
 

MQue

Top Contributor
das Problem ist folgendes: nur wenn z.B ein Button gedrückt wurde oder wenn ein Wert in ein TextFeld geschrieben wurde, soll etwas auf die Schnittstelle geschrieben werden und nicht wenn
von der Schnittstelle etwas in mein Array geschrieben wurde, sich dadurch auf einer Komponente etwas geändert hat und dadurch die setArrayEintrag wieder aufgerufen wird.
 

MQue

Top Contributor
und wie geht das? bzw wie kann ich jetzt feststellen, dass ein JButton in die Methode geschrieben hat.
 

Marco13

Top Contributor
Ich nicht. Wenn ich es richtig verstanden habe, geht es jetzt gerade um diese Endlosrekursion. Du solltest die Variante mit dem zusätzlichen boolean nehmen. Aber die Entscheidung liegt bei dir...
 

MQue

Top Contributor
hab ich schon gehabt, das geht aber nicht, weil wenn ich sage, dass die Methode von der seriellen Schnittstellen- Klasse aufgerufen wurde, dann ist der Wert false, jetzt ändert sich aber etwas auf meiner GUI, dadurch wird die Methode wieder aufgerufen und dadurch wird wieder gesendet, also das mit dem Flag funktioniert leider nicht bei diesem Problem.
 
S

SlaterB

Gast
wenn ich noch öfter 'vielen Dank!!!' lese, dann antworte ich nicht mehr...

-----

dein seltsames Gerede interpretiere ich so, dass du den boolean-Parameter nicht verwenden kannst,
weil an einer bestimmten Stelle mal true und mal false übergeben werden müsste,

wenn das so ist, dann funktioniert aber auch der StackTrace nicht,
denn der gibt ja beide male den gleichen Aufrufer..

es sei denn du willst im StackTrace noch weiter zurück gehen,
aber das klappt auch nicht, wenn das ganze von irgendwelchen Programmeinstellungen abhängt, die 20 Sekunden vorher ganz woanders getroffen wurden,

dann doch lieber die Einstellung ordentlich ablegen, wiederfinden,
und anhand dessen entscheiden
 

MQue

Top Contributor
Nö so kann man das nicht interpretieren.

ich habe eine Methode (unten), dies eMethode wird von 2 Klassen aufgerufen, einmal wenn ich auf meiner GUI einen Button drücke (1) und (2), wenn von der Schnittstelle Werte kommen.
Ein fireUpdate (befindet sich in der Methode) soll aber nur dann geschossen werden, wenn die Methode setArrayEintrag von einer Komponente aufgerufen wird (sprich ein Button gedückt wurde) und nicht wenn ich etwas von der Schnittstelle empfangen habe, sich dadurch eine Komponente auf meiner GUI ändert und dadurch die Methode setArrayEintrag aufgerufen wird.

Bzw. unten habe ich meine Ausgabe aquf der Konsole aufgelistet, welche ich mit Thread.currentThread().getStackTrace().toString() in der Methode bekommen habe.
Vielleicht könnte mir jemand sagen, wie ich daraus herausbekomme, von wem diue Methode aufgerufen wurde (z.B. von button1 oder von der Wertanzeige1 oder so ähnlich).

Vielleicht hat da jemand noch eine Tip für mich.

lg




Code:
 public void setArrayEintrag(int[] Array, boolean write) 
	{
	System.arraycopy(Array, 0, this.Array,0, Array.length);
	datenSpeicher.fireUpdate(this.iArr1);

        // hier möchte ich das senden an die serielle Schnittstelle implementieren aber nur, wenn diese MEthode von einer     //Komponente aufgerufen wurde, ich möchte also unterscheiden, von wem die MEthode aufgerufen wurde 
        }

Code:
[Ljava.lang.StackTraceElement;@135b92e
getstackTrace(): [Ljava.lang.StackTraceElement;@1e0c0b6
getstackTrace(): [Ljava.lang.StackTraceElement;@8c064f
getstackTrace(): [Ljava.lang.StackTraceElement;@a353ed
getstackTrace(): [Ljava.lang.StackTraceElement;@daf109
 
S

SlaterB

Gast
du drehst dich im Kreis:
also, setze an die Operation ein boolean,
wenn 'von Komponenten aufgerufen wird' was immer das heißt, dann wird true übergeben, sonst false,
oder andersrum

---------

schau in die API, StackTraceElement bietet Operationen zur Bestimmung der Klasse/ Operation/ Zeilennummer
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Thymleaf Methodenaufruf Allgemeine Java-Themen 4
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
A Methodenaufruf funktioniert nicht richtig Allgemeine Java-Themen 5
mrbig2017 Kapselung Methodenaufruf in DLL schlägt fehl! Allgemeine Java-Themen 1
S Methodenaufruf in Unterklassen Allgemeine Java-Themen 3
F Methodenaufruf mit abgeleiteter Klasse als Arg... Allgemeine Java-Themen 10
O Zeitbedingter Methodenaufruf Allgemeine Java-Themen 1
C Objekt Datenverlust nach Methodenaufruf Allgemeine Java-Themen 9
D Frage und Antwort Programm, Problem bei Methodenaufruf Allgemeine Java-Themen 3
127.0.0.1 Methodenaufruf -cannot find symbol- Allgemeine Java-Themen 14
S Methoden Unerwarteter Methodenaufruf Allgemeine Java-Themen 5
T Polymorphie Statischer Methodenaufruf einer Kindsklasse Allgemeine Java-Themen 4
pg1337 Methodenaufruf Allgemeine Java-Themen 22
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
R Java Parameterabfrage bei Methodenaufruf Allgemeine Java-Themen 4
MQue Performance Methodenaufruf - if Abfrage Allgemeine Java-Themen 19
B Problem mit Methodenaufruf in Konstruktor Allgemeine Java-Themen 6
S Bekomme nullwerte bei methodenaufruf in versch. Klassen Allgemeine Java-Themen 16
W Sequentieller Methodenaufruf -> UML Allgemeine Java-Themen 10
G [Reflection + WebService] Methodenaufruf an einem Proxy Allgemeine Java-Themen 11
S Methodenaufruf per String? Allgemeine Java-Themen 4
G Fehler bei Methodenaufruf Allgemeine Java-Themen 30
P Methodenaufruf von catch Allgemeine Java-Themen 2
MQue Methodenaufruf auf der Insel Allgemeine Java-Themen 4
egrath Zu langsamer Methodenaufruf Allgemeine Java-Themen 4
N Methodenaufruf wiederholbar machen? Allgemeine Java-Themen 2
H Methodenaufruf Allgemeine Java-Themen 5
D Probleme mit Methodenaufruf von Klasse in dll (jni) Allgemeine Java-Themen 19
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
byte Methodenaufruf per Reflection? Allgemeine Java-Themen 2
B Methodenaufruf Allgemeine Java-Themen 6
S Methodenaufruf Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben