【发布时间】:2018-05-31 22:39:16
【问题描述】:
考虑以下病态的例子:
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?我们不能导入它,也不能使用完全限定名称,因为会使用嵌套类符号。
在这种情况下我们能做什么? (除了显而易见的 - 不要为嵌套类使用这种肆无忌惮的邪恶名称)。
【问题讨论】:
-
你有理由相信有一些解决方案吗?
-
@shmosel 不是特别好。我只是在想一些奇怪的进口案例,同时进行一些容易出错的检查。
-
我很想看到一位语言架构师回答这个问题。
-
如果你遵循标准Java Naming Conventions,这个问题就不会发生,即包名全部小写,类名混合大小写。命名约定的存在是有原因的。
-
@Andreas 我同意;但我问的是语言允许什么,而不是约定使用什么。
标签: java language-specifications