使用JAVA8,可以用lambda表達式替換內部類。Java如何知道使用lambda表達式時應該覆蓋哪種方法
Comparator c = (a, b) -> Integer.compare(a.length(), b.length());
Runnable java8Runner =() ->{System.out.println("I am running");};
jvm如何知道,這個lambda應該重寫正確的方法?在上面的例子中,它們是run()
和compare()
。
你的第一個例子不會編譯,因爲使用* raw *'Comparator'意味着編譯器不知道'a'和'b'的類型是什麼。將它改爲'Comparator'就可以編譯。 –
Andreas