Есть несколько способов сделать так, чтобы класс мог использоваться, а переменная нет. Нужно создать специальный синтаксический контекст.
1 способ
Привести
2 способ
Создать класс, который наследуется от нужного класса
И вывести на экран переменную
3 способ
Использовать в методе main дженерики
1 способ
Привести
null
к нужному типу и обратиться к статической переменной классаSystem.out.println(((X.Y) null).Z);
2 способ
Создать класс, который наследуется от нужного класса
static class XY extends X.Y {};
И вывести на экран переменную
System.out.println(XY.Z);
3 способ
Использовать в методе main дженерики
public static <T extends X.Y> void main(String[] args) {
System.out.println(T.Z)
}