Внутренний класс всегда доступен через знак доллара, потому что когда компилятор java компилирует файл исходного кода java, он генерирует файл .class (байт-код).
если существует только один класс, например Hello.java, и этот класс является внешним классом, то компилятор java при компиляции создает файл Hello.class, но если этот класс имеет внутренний класс HelloInner, то компилятор java генерирует d Hello $ HelloInner.class (байт-код).
, поэтому байт-код всегда выглядит как следующий фрагмент с именем Outer.java:
.
public class Outer
{
public var;//member variable
Outer()//constructor
{
}
class Inner1
{
class Inner2
{
}
}
}
, поэтому байт-код: Outer $ Inner1 $ Inner2.class
именно поэтому мы используем знак $ для доступа к внутреннему классу.:)