Wer erklärt mir folgenden Code?

  • Antworten:6
T. Burns
  • Forum-Beiträge: 27

24.01.2014, 11:24:44 via Website

Hallo,

ich arbeite mich z.Zt. in Android-Programmierung ein.
In einem Beispiel fand ich folgenden Code:

1private Runnable mMyRunnable = () -> { start(); };

Komme aber mit der Syntax nicht klar, was macht dieser Code genau?
OK es wird ein Objekt der Klasse Runnable erstellt, aber was bedeutet das:

1= () -> { start(); }

Bin für jede Hilfe dankbar!

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

24.01.2014, 12:15:03 via Website

Da wird die Methode start() ausgeführt. Ob diese nun local oder sich auf den Thread#start bezieht kA. Sieht nach SCALA aus

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
T. Burns
  • Forum-Beiträge: 27

24.01.2014, 13:53:27 via Website

Hallo Mac Systems,

danke erstmal für Deine Antwort. Aber helfen tut mir das nicht wirklich. Dass da die Methode start() ausgeführt wird ist wohl leicht verständlich.
Ich wollte die Syntax genauer wissen. Wenn ich eine Methode eines Objektes Aufrufe dann mach ich das je nach Programmierpsrache mit dem Punkt- oder Pfeiloperator:

meinObj.start() bzw. meineObj->start();

so wäre mir das klar, was aber hat die Syntax

1() -> { start(); }

genau zu bedeuten?

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

24.01.2014, 14:08:12 via Website

Eine Runnable schreibt man so:
1Runnable run = new Runnable (){
2
3 @Override
4 public void run() {
5 start();
6
7 }
8
9}

PS: Der Code oben ist in der Praxis falsch.

— geändert am 24.01.2014, 14:08:43

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

Antworten
T. Burns
  • Forum-Beiträge: 27

24.01.2014, 16:12:42 via Website

Hallo Pascal P.,

danke für Deine Antwort, aber auch das hilft mir nicht wirklich weiter.
Ob es so gemacht wird oder nicht, die Frage habe ich nicht gestellt.
Der Code ist so aus einem funktionieren Code-Beispiel entnommen, ist also nicht von mir.
Um den Code zu verstehen habe ich halt hier gepostet.

Also was bedeutet bitte die Syntax:

1= () -> { start(); }

— geändert am 24.01.2014, 16:18:06

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

24.01.2014, 16:22:11 via Website

Ob das nun unter Android compiled wage ich zu bezweifeln, aber das sieht nach FunctionProgramming aus, oder auch ein Java 8 bsp. Vieles ist ja nur "sugar" was man weglassen kann bei so einem Interface wie dem runnable.

Schau dir mal Java 8 Lamdas an -> https://blog.codecentric.de/2013/10/java-8-erste-schritte-mit-lambdas-und-streams/

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
Markus B.
  • Forum-Beiträge: 636

26.01.2014, 10:07:23 via App

Hallo,
nutzt du zufällig Imtellij oder Android Studio und die entsprechende code Zeile ist grau hinterlegt ?

Antworten