Gibt es eine Möglichkeit, einen generischen Parametertyp explizit in einem Lambda-Ausdruck zu definieren?

8

Ich habe hier eine Klasse Handler , die Event s eines bestimmten Typs behandeln soll:

%Vor%

Wie Sie sehen, versucht es standardmäßig, den Typ von Event zu erhalten, indem der erste Parametertyp der Methode handle() zurückgegeben wird, wenn Sie getEventType() ausführen (im Gegensatz zu Handler ) gibt es explizit zurück). Dies funktioniert korrekt mit dem folgenden JUnit-Test:

%Vor%

Intellij IDEA sagt mir, dass ich genericHandler zu einem Lambda-Ausdruck vereinfachen kann, also tue ich das:

%Vor%

Der Test gibt jedoch den Namen Event aus, nicht EmptyEvent .

Meine Frage ist also: Gibt es eine Möglichkeit, den generischen Parametertyp eines Lambda-Ausdrucks explizit zu definieren?

Ich habe versucht, so etwas zu tun, aber es tut nichts (es ist auch ein Fehler)

%Vor%     
octopod 21.05.2015, 01:44
quelle

3 Antworten

4

Ja, Sie können den Typ eines Lambda-Ausdrucksparameters definieren:

%Vor%

Im Allgemeinen ist es nicht notwendig, weil es durch den Kontext impliziert wird. Es macht jedoch oft den Code leichter zu lesen.

Siehe Ссылка für weitere Details

    
sprinter 21.05.2015 01:51
quelle
1

Sie treffen Annahmen über die Klasse des Objekts, für die das Lambda gilt, und ich glaube nicht, dass diese Annahmen gültig sind. Es genügt, dass das Lambda die Methode handle() von Handler überschreibt und zur Laufzeit eine handle() -Methode, die Event benötigt, ausreicht, um die handle() von Handler zu überschreiben, was nach dem Löschen% co_de einnimmt %. Nirgendwo ist garantiert, dass das Lambda eine Event -Methode haben muss, von der man annehmen kann, dass sie handle() benötigt.

    
newacct 21.05.2015 07:11
quelle
0

Die folgenden Variablen können alle auf dasselbe Objekt zeigen!

%Vor%

Sie können nicht wirklich über den genauen Laufzeittyp eines Lambda-Ausdrucks nachdenken; Die einzige Garantie ist, dass der Lambda-Body zur Laufzeit arbeitet.

Ссылка

  

Der Rumpf der [runtime] -Methode hat den Effekt zur Auswertung des Lambda-Körpers

    
ZhongYu 21.05.2015 14:39
quelle

Tags und Links