由于编译器会在所有java程序中自动导入java.lang
包,为什么在程序中使用注释时需要在程序顶部编写import java.lang.annotation;
语句?
答案 0 :(得分:5)
因为java.lang.annotation
包与java.lang
包不同。它们只是不同的包装。
想象一下,如果导入一个软件包导入了所有软件包“在它下面 - 那么
import java.*;
几乎可以导入标准库中的所有内容 - 但这不是它的工作方式。
的导入声明import foo.*;
只需导入foo
包中的所有类型 - 它不会在恰好以foo.
开头的任何其他包中导入任何内容。
答案 1 :(得分:3)
因为java.lang
自动导入仅适用于其包所属的类和接口,因此它是java.lang
。
annotation
是java.lang
内的子包,此自动行为不会传播到仅包含java.lang
的直接类的子包