Consumer (Java8 Lambda) an Timer übergeben

Hans_G

Mitglied
Ich kann einen javax.swing.Timer problemlos mit einem Lambda-Ausdruck anstelle des ActionListeners konstruieren:
Java:
Timer timer = new Timer(1000, (evt) -> doSomething() );

Warum geht es nicht auch mit einem Consumer?
Java:
Consumer<ActionEvent> consumer;
consumer = (evt) -> doSomething();
Timer timer = new Timer(1000, consumer);

Der Kompiler gibt für die letzte Zeile aus:
Code:
incompatible types: Consumer<ActionEvent> cannot be converted to ActionListener

Übesehe ich irgendwo etwas, oder ist das (noch) nicht implementiert?
 

Flown

Administrator
Mitarbeiter
Ahja das Ding mit den Lambda-Expressions. In Java wird das ein wenig anders gehandhabt, als in anderen Sprachen.

Du hast hier zwar die selbe Signatur (also (ActionEvent e) -> {}), aber nicht die gleiche Klasse. Nur weil beide Klassen die gleiche Signatur hätten, sind sie nicht gleich.
Java wandelt Lambda-Expressions in anonyme Klassen um (damit der Bytecode kompatibel bleibt). Nennen wir es einfach mal "Syntactic Sugar" und nicht wirklich ein Funktionsobjekt.

HIER vielleicht etwas nachzulesen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S BlockingQueue mit dynamischer Anpassung der Anzahl von Producer und Consumer Threads Allgemeine Java-Themen 1
T Threads Consumer-Producer Allgemeine Java-Themen 2
B eigenes Consumer Interface Allgemeine Java-Themen 0
P Buffer - Consumer Producer - Threads synchronisieren Allgemeine Java-Themen 15
L Producer/Consumer Thread mit notify auf File Allgemeine Java-Themen 5
V Java8 und JavaMail Allgemeine Java-Themen 27
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
Neumi5694 Lambda - Block vs "Anweisungsliste" Allgemeine Java-Themen 8
R Lambda Expression in einer Methode execute() aufrufen (execute() ist eine Methode aus dem funktionalen Interface Command) Allgemeine Java-Themen 5
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
A Lambda-Ausdrücke Allgemeine Java-Themen 5
A Lambda und Streams verstehen Allgemeine Java-Themen 4
O Best Practice Lambda Expressions Allgemeine Java-Themen 3
Rudolf Compiler-Fehler Lambda als Argument kompiliert nicht Allgemeine Java-Themen 2
E Lambda filter performance Allgemeine Java-Themen 2
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
M Lambda "invalid method reference no suitable method found" Allgemeine Java-Themen 2
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben