使用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