Aus anonymer, innerer Klasse auf übergeordnete Instanz zugreifen
FraFu
- java
Hallo!
Ich bin mir nichtmal sicher, ob ich das Thema richtig gewählt habe. Aber hier die Problembeschreibung:
01: class MyApplet extends java.applet.Applet, Implements MyWatchDog {
02: public void init(){
03: ...
04: icon.addMouseListener(new MouseAdapter() {
05: public void mouseClick(MouseEvent e){
06: MyObj obj=new MyObj(this.[instanz von MyApplet]);
07: }
08: }
09: }
10: public void MyWatchDogFunction(){
11: ...
12: }
13: }
Ich möchte in Zeile 06 dem Konstruktor von MyObj, die Instanz von MyApplet übergeben.
Konkret erwartet der Konstruktor von MyObj ein Objekt das das Interface MyWatchDog implementiert hat. MyApplet ist so ein Objekt und das möchte ich an MyObj übergeben. Geht das irgendwie?
mfg
frafu
Hallo!
Ich habs jetzt mit eine lokalen Variable folgendermaßen gelöst:
01: class MyApplet extends java.applet.Applet, Implements MyWatchDog {
private MyWatchDog watchDog=this;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
02: public void init(){
03: ...
04: icon.addMouseListener(new MouseAdapter() {
05: public void mouseClick(MouseEvent e){
06: MyObj obj=new MyObj(watchDog);
^^^^^^^^^
07: }
08: }
09: }
10: public void MyWatchDogFunction(){
11: ...
12: }
13: }
Könnte man das auch anders lösen?
mfg
frafu
Hallo,
Ich habs jetzt mit eine lokalen Variable folgendermaßen gelöst:
01: class MyApplet extends java.applet.Applet, Implements MyWatchDog {
Was bitte macht "Implements"? Nein, ich meine nicht "implements".
private MyWatchDog watchDog=this;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hm, im ersten Posting schriebst Du:
Ich möchte in Zeile 06 dem Konstruktor von MyObj, die Instanz von MyApplet übergeben.
Konkret erwartet der Konstruktor von MyObj ein Objekt das das Interface MyWatchDog implementiert hat. MyApplet ist so ein Objekt und das möchte ich an MyObj übergeben. Geht das irgendwie?
Hier castest Du nun aber das Object MyApplet zu einem Interface MyWatchDog.
Welchen Parameter erwartet Dein MyObj? Wie sieht der Construcktor aus?
MyObj(MyWatchDog o)
oder
MyObj(Object o)
Könnte man das auch anders lösen?
So, wie Du es im ersten Posting beschrieben hast, wäre es
06: MyObj obj=new MyObj(this);
viele Grüße
Axel
Hallo,
So, wie Du es im ersten Posting beschrieben hast, wäre es
06: MyObj obj=new MyObj(this);
Fürs Archiv:
Nein, falsch, denn ich hatte die innere Klasse
new MouseAdapter(){}
übersehen.
viele Grüße
Axel
hallo,
06: MyObj obj=new MyObj(this.[instanz von MyApplet]);
wenn ich dich richtig verstande habe dann probier es mal mit MyApplet.this
mfg
cwi
moin cwi :)
wenn ich dich richtig verstande habe dann probier es mal mit MyApplet.this
ist myApplet denn static? (und überhaupt... was soll bitte ein this-Aufruf in einer statischen Klasse? "Ein bisschen Konsequenz beim prgrammieren bitte" *meinen Professor zitier*)
liebe Grüße aus Berlin
lina-
Hallo,
wenn ich dich richtig verstande habe dann probier es mal mit MyApplet.this
ist myApplet denn static?
Wie kommst du jetzt auf "myApplet"? Er schrieb doch "MyApplet". Großer
Unterschied.
(und überhaupt... was soll bitte ein this-Aufruf in einer statischen Klasse?
Ich sehe keine statische Klasse.
"Ein bisschen Konsequenz beim prgrammieren bitte" *meinen Professor zitier*)
Das, was cwi schrieb, war korrekt, sofern ich die Fragestellung richtig
verstanden habe.
Gruß
Slyh
Hallo!»» moin cwi :)
wenn ich dich richtig verstande habe dann probier es mal mit MyApplet.this
ist myApplet denn static? (und überhaupt... was soll bitte ein this-Aufruf in einer statischen Klasse? "Ein bisschen Konsequenz beim prgrammieren bitte" *meinen Professor zitier*)
Scheint aber zu funktionieren! Kann das jemand erklären?
mfg
frafu
Hallo,
Scheint aber zu funktionieren! Kann das jemand erklären?
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4
viele Grüße
Axel
Hallo!»» Hallo,
Scheint aber zu funktionieren! Kann das jemand erklären?
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4
Danke! Jetzt kann ich mich erinnern. Meine Java Zertifizierung ist ja doch schon ein paar Jahre her! :-)
mfg
frafu
moin :)
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4
das erklärt meinen Denkfehler... (mal vom Schreibfehler groß vs. klein abgesehen *G*)
ich bin davon ausgegangen dass MyApplet.this ein Objekt von einer statischen Klasse anspricht...
Danke Axel für die Weiterbildung! :)
liebe Grüße aus Berlin
lina-