package A;
public class A {
}
package B;
import A.*;
public class B {
public A a;
}
import B.*;
public class Main {
public static void main(String[] args) {
Object obj = new B().a;
}
}
为什么我不需要在Main中导入A类?它在某些时候用于Main!
有人可以告诉我import指令是如何工作的吗?
答案 0 :(得分:6)
Main
实际上没有使用它。 Main
在任何时候都不会引用名为A
的类,其任何方法或其任何字段。编译器永远不需要弄清楚你键入A
但真正意味着A.A
- 所有的导入都是为了。 new B().a
可能会返回A
,但Main
并不关心,因为它会立即隐式投放到Object
。
答案 1 :(得分:1)
导入用于消除歧义。例如,如果您的项目中有2个B(firstpackage.B
和secondpackage.B
)类,那么您正在编写类似的内容:
B b = new B()
Java编译器应该知道它应该使用哪个类(来自第一个或第二个包)。
但是当你从其他类中调用B
类的实例时,它已经定义了,并且在这种情况下没有歧义。
答案 2 :(得分:0)
Main类永远不会使用A类的对象,因此不会导入任何导入,使用B类而B使用A,这是另一回事。 java在编译时需要注意,因此依赖项不是嵌套的,否则主类muss导入其对象内部使用/需要的所有内容