考虑以下代码:
import java.util.Calendar;
class Demo
{
class Calendar {}
public static void main (String[] args) {
// System.out.println(Calendar.DAY_OF_WEEK); // Would be an error.
}
}
这段代码编译得很好;但如果你指的Calendar
是Demo
inside,你指的是Demo.Calendar
,不是java.util.Calendar
。
导入显然是多余的;但考虑到您不允许导入与在同一编译单元中定义的顶级类具有相同简单名称的类(根据JLS Sec 7.5.1),这似乎很奇怪:
import java.util.Calendar; // error: Calendar is already defined in this compilation unit
class Calendar {}
为什么像第一个代码示例中这样的导入不会是编译时错误,是否有实际原因?