为什么我不需要在Main中导入A?

时间:2016-03-30 15:19:23

标签: java

   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指令是如何工作的吗?

3 个答案:

答案 0 :(得分:6)

Main实际上没有使用它。 Main在任何时候都不会引用名为A的类,其任何方法或其任何字段。编译器永远不需要弄清楚你键入A但真正意味着A.A - 所有的导入都是为了。 new B().a可能会返回A,但Main并不关心,因为它会立即隐式投放到Object

答案 1 :(得分:1)

导入用于消除歧义。例如,如果您的项目中有2个B(firstpackage.Bsecondpackage.B)类,那么您正在编写类似的内容:

B b = new B()

Java编译器应该知道它应该使用哪个类(来自第一个或第二个包)。 但是当你从其他类中调用B类的实例时,它已经定义了,并且在这种情况下没有歧义。

答案 2 :(得分:0)

Main类永远不会使用A类的对象,因此不会导入任何导入,使用B类而B使用A,这是另一回事。 java在编译时需要注意,因此依赖项不是嵌套的,否则主类muss导入其对象内部使用/需要的所有内容