Вы можете сделать пакет внутреннего класса приватным, что означает, что он будет доступен только для других классов в том же пакете. Это также делается довольно часто для скрытых классов внутри стандартных пакетов JDK, таких как java.lang
или java.util
.
в pkg / MyClass.java
public class MyClass {
...
}
в pkg / MyHiddenClass.java
class MyHiddenClass {
final MyClass outer;
MyHiddenClass( MyClass outer )
{
this.outer = outer;
}
...
}
Теперь, когда вы хотите получить доступ к методам или переменным внешнего класса, вам нужно добавить к ним префикс outer.
, но вы получите, по существу, те же функциональные возможности, что и раньше, когда компилятор создал ссылку на внешний экземпляр. *