Seltsame Variable, was ist das?

  • Antworten:3
Alexander F.
  • Forum-Beiträge: 8

26.10.2014, 14:19:05 via Website

Hallo,

ich gehe gerade ein Tutorial vom Facekook SDK für Android durch und bin dort auf etwas gestoßen, das ich bis jetzt schon öfters benutzt habe (abgeschrieben trifft es wohl eher) aber wo mir nicht klar ist, was da genau passiert.
Da steht :

Define a private variable that contains the implementation of the Session.StatusCallback listener:

und dann :

private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
    onSessionStateChange(session, state, exception);
}

};

Mit dem was ich jetzt so gelernt habe, würde ich das so deuten, da wird eine Referenzvariable erzeugt, die auf das Objekt zeigt, das mit new Session.Satus.Callback() erzeugt wird. Was ich aber nicht weiß ist, was danach in den geschweiften Klammern passiert. Ich vermute, dass direkt beim Erzeugen des Objekts die Methode call überschrieben wird, aber bin mir eben nicht sicher.
Ich hab das Buch Java ist auch eine Insel hier liegen, wenn mir jemand das richtige Stichwort nennt, lese ich da gerne selber mal nach. ;).

Danke und noch einen schönen Sonntag!
Alex

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

26.10.2014, 17:37:27 via App

Hallo Alex,
wie deinem Zitat zu entnehmen ist, initialisierst du einen Callback, in Java besser gesagt instanzierst du ein Interface und überschreibst dabei die angegebene(n) Methode(n).
Für mehr infos einfach mal nach callback oder interface googeln oder hier Fragen ;)

LG Pascal

LG Pascal //It's not a bug, it's a feature. :) ;)

Alexander F.

Antworten
Alexander F.
  • Forum-Beiträge: 8

27.10.2014, 14:52:27 via Website

Hi Pascal,

danke für die fixe Antwort!
Ich werde das nachlesen. Wenn es Probleme gibt, melde ich mich nochmal ;).

Grüße
Alex

Antworten
Fabian Simon
  • Forum-Beiträge: 359

27.10.2014, 15:32:29 via Website

Noch als ergeänzung:
Das was du gemacht hast nennt man eine Innere Anaonyme Klasse.
das Ganze kannst du nämlich auch so nutzen:

public class MyCallBack implements Session.StatusCallback{
@Override
public void call(Session session, SessionState state, Exception exception) {
//mach was..
}


}

und dann Irgendwo im Code:

private MyCallBack callback = new MyCallBack();

— geändert am 27.10.2014, 15:33:11

Alexander F.

Antworten