Почему статический вложенный класс в java.lang.Thread реализации не виден? - PullRequest
0 голосов
/ 29 марта 2012

Следующий код работает отлично.

public class StaticClass {

public static void main(String[] args) {
    L.P h = new L.P();
    h.show();

}

}

class L {

static class P {
    public void show() {
        System.out.println("This is static nested class.");
    }
}

}

Тогда почему статический вложенный класс "статический класс WeakClassKey расширяет WeakReference>" в java.lang.в моем классе?

Исходный код для java.lang.Thread можно найти здесь: http://www.docjar.com/html/api/java/lang/Thread.java.html [в строке # 1984].

Ответы [ 3 ]

6 голосов
/ 29 марта 2012

Поскольку это не класс public.

static class WeakClassKey

Это имеет привилегии пакета, поэтому только классы в одном пакете могут ссылаться на него.

5 голосов
/ 29 марта 2012

Поскольку это не класс public или protected, и, следовательно, он не виден вашему коду, который находится в другом пакете.

4 голосов
/ 29 марта 2012

StaticClass и L находятся в одном пакете, а класс P имеет модификатор доступа по умолчанию (т.е. package private )Вот почему это доступно.WeakClassKey имеет тот же модификатор - но находится в другом пакете.Только классы из java.lang могут получить к нему доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...