Рассмотрим следующий патологический пример:
class Ideone {
static class ArrayList<T> {
ArrayList() {
System.out.println("!!");
}
}
static class java {
static class util {
static class ArrayList<T> {
ArrayList() {
System.out.println("Here");
}
}
}
}
public static void main(String[] args) {
new ArrayList<>();
new java.util.ArrayList<>();
// Can I refer to the "usual" java.util.ArrayList?
}
}
Два экземпляра, созданных в конструкторе, представляют собой вложенные классы.
Но как я могу обратиться к java.util.ArrayList
который все мы знаем и любим в одном классе? Мы не можем импортировать его, и мы не можем использовать полностью квалифицированное имя, поскольку вместо этого будут использоваться вложенные символы класса.
Что мы можем сделать в этом случае? (За исключением очевидных - прекратите использовать такие бессмысленные злые имена для вложенных классов).