Когда выполняется следующий код, он печатает "X.Q"
вместо "A<T>.X.Q"
, как того требует спецификация языка.
class A<T> {
static class X {
static class Q {
public static void main() {
System.out.println("A<T>.X.Q");
}
}
}
}
class B extends A<B.Y.Q> {
static class Y extends X {
} // X here is inherited from A
}
class X {
static class Q {
public static void main() {
System.out.println("X.Q");
}
}
}
public class Test {
public static void main(String[] args) {
B.Y.Q.main();
}
}
Может кто-нибудь помочь мне понять, какой будет выход этой программы, поскольку мое понимание должно быть "A<T>.X.Q"
вместо "X.Q"
. Пожалуйста, исправьте меня, если я ошибаюсь, где