这与处理前向引用的JLS#8.3.3有关。特别是,如果使用完全限定的名称,它将进行编译(因为该规则的第三个条件变为false,
因此在C的实例变量初始值设定项或C的实例初始值设定项中使用简单名称 ):
final Runnable y = () -> System.out.println(this.y.hashCode());
在匿名类的情况下,第四个条件( C是包含use的最内部类或接口 )不正确,因为封闭类是匿名类本身。

这与处理前向引用的JLS#8.3.3有关。特别是,如果使用完全限定的名称,它将进行编译(因为该规则的第三个条件变为false,
因此在C的实例变量初始值设定项或C的实例初始值设定项中使用简单名称 ):
final Runnable y = () -> System.out.println(this.y.hashCode());
在匿名类的情况下,第四个条件( C是包含use的最内部类或接口 )不正确,因为封闭类是匿名类本身。