Соответствующие части Спецификации языка Java должны быть:
§8.1.4:
[...] ClassType должен назвать доступный (§6.6) тип класса, иначе произойдет ошибка времени компиляции.
§6.6.1:
[...]
Элемент (класс, интерфейс, поле или метод) ссылочного типа (класс, интерфейс или массив) или конструктор типа класса доступен только в том случае, если тип доступен, а элемент или конструктор объявлен для разрешения доступа:
- Если член или конструктор объявлен как открытый, то доступ разрешен. Все члены интерфейсов неявно общедоступны.
[...]
- В противном случае, если член или конструктор объявлен закрытым, тогда доступ разрешается тогда и только тогда, когда он происходит в теле класса верхнего уровня (§7.6), в котором содержится объявление члена или конструктора.
Так как ClassType не находится в теле класса, B.Secret
недоступен в этом месте, поэтому A<B.Secret>
недоступен, поэтому должна произойти ошибка времени компиляции.