问题遇到的现象和发生背景
为什么我注释掉的代码编译不能过呢?
为什么lambda表达式实现的抽象方法的方法体中不能调用默认方法呢?
通过测试,我发现他不仅不可以调用默认方法,甚至不能调用当前对象的方法,比如说hashcode什么的。
为什么呢?
问题相关代码,请勿粘贴截图
public class shape{
public static void main(String[] args) {
a c = new a(){
@Override
public void a(){
this.hashCode();
b();
}
};
a d = () -> {
// this.hashCode();//编译错误
// b();//编译错误
};
}
}
@FunctionalInterface
interface a{
void a();
default void b(){
System.out.println(this.hashCode());
}
}