可以。

Java语言规范里只说了外部类可以访问内部类的private/protected成员,内部类也可以访问外部类的private/protected成员,但是没有规定死要如何实现这种访问。

JVM规范则在大多数时候把每个类都看作等价于top-level的,也就是说JVM不关心外部类和内部类之间的嵌套关系。**对JVM来说,enclosing class和inner class在大部分情况下都是“不相关的两个类”,视为一个包中的两个类,所以它们之间相互是不能访问对方的private/protected成员的。**

但是在实现中,衔接Java语言规范与JVM规范的就是Java源码级编译器(例如javac、ECJ等)。简单来说就是在外部类/内部类之间要访问对方的private/protected成员时Java源码级编译器**会生成合适的“access method”**来提供合适的可访问性,这样就绕开了原本的成员的可访问性不足的问题。

综上,内部类private变量可被外部类直接访问,这由Java源码级编译器在编译过程中实现。