2017-10-25 2 views
2

Wenn der Compiler den Typ der Methode mit nur einem Parameter herausfinden kann, warum ist er nicht in der Lage, dasselbe für Methoden mit zwei Parametern oder mehr Tacking acount die Reihenfolge der Parameter zu tun?Warum Java Lambda Type Inference behandelt nur mit Methode mit eindeutigen Parameter?

Hier ein Beispiel:

enter image description here

In einer anderen Art und Weise, warum die Kompilierung kann nicht herausfinden, dass str ist ein String (Erster Parameter in der einzigartigen Methode, und auch ist str2 ein String ? (zweite Parameter in der einzigartigen Methode)

+3

'(str, str2) -> str.length()'? – Eugene

+0

Es kann, Prozessor stringProcessor = (str1, str2) -> str1.length(); 'wird korrekt mit' str1' und 'str2' als' String' abgeleitet. –

+1

@Eugene es funktioniert :) danke – Aguid

Antwort

4

Es scheint, Sie definieren diese nicht richtig:

(str, str2) -> str.length() 

Sie sollten auch einen Kompilierzeitfehler für das zweite Beispiel erhalten.