/ / Wird hier ein anonymes Objekt zurückgegeben? - Java, Android, Schnittstelle, Rückruf, außer Kraft setzen

Wird hier ein anonymes Objekt zurückgegeben? - Java, Android, Schnittstelle, Rückruf, überschreiben

Ich gehe den Android-Code auf der Kamera durchTutorial. Ich komme aus einem C # / Obj-C / Swift-Sprachpaket, daher ist Java für mich immer noch neu. Ich bin mit funktionaler Programmierung vertraut, aber diese Syntax, die ich sehe, scheint nicht funktional zu sein (oder vielleicht irre ich mich).

Dies ist der Code:

 button.setOnClickListener
(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{

}
}
);

Die Linie new View.OnClickListener() ist, woran ich festhalte. OnClickListener ist ein Interface. Meine Frage lautet also: erstellt der neue View.OnClickListener () ein anonymes Objekt mit der OnClickListener-Schnittstelle und überschreibt die onClickView?

P.S. Wenn Sie mir auch den Java-Namen für diesen "Typ" -Code geben könnten, würde ich mich auch darüber freuen.

Antworten:

1 für die Antwort № 1

Wie Sie vermutet haben, der Anruf an new View.OnClickListener() {...} instanziiert ein Objekt eines anonymen Typs, das implementiert wird View.OnClickListener. Der Name dieser Klasse wird durch den Namen der Klasse bestimmt umgebende Klasseund wird die Form annehmen SurroundingClass$index. Also, wenn dies die erste anonyme innere Klasse ist MyClasswird es genannt MyClass$1.


1 für die Antwort № 2

Ja, es wird eine anonyme Klasse erstellt, die die Methode implementiert hat. Überprüfen Sie dies heraus: Anonyme Klassen Oracle