<分区>
我有很多类只有一个方法(其中一半不使用它们的参数,因此将其命名为下划线),我刚切换到 Java 8。现在我想用 lambda 替换它们。
这是我的代码:
interface I {
void stuffHappened(Integer howManyStuff);
}
public class A {
void go() {
I i = new I() {
public void stuffHappened(Integer _) {
System.out.println("woah!!");
}
};
}
}
之后:
interface I {
void stuffHappened(Integer howManyStuff);
}
public class A {
void go() {
I i = _ -> System.out.println("woah!!");
}
}
如您所见,它显然不再有效,声称使用“_”作为参数名称不再有效。但是为什么它首先允许这种重构呢?为什么它适用于匿名类,而不适用于 lambda?这真的是新规定吗?或者是 IDEA 中的某种差异?
我正在使用 Intellij-IDEA(第一次使用它),实际上,Android Studio(测试版)0.8.1(使用 retrolambda 以允许在 android 上使用 lambda),我认为它使用了 IDEA。