package test;import factory.BFactory;public class Test
{
public static void main(String[] args)
{
BFactory.getBInstance().f();
}
}package factory;import other.B;public class BFactory
{
public static B getBInstance()
{
return new B();
}
}package other;public class B 
{
public void f()
{
System.out.println("B.f()");
}
}为什么在Test类里面没有import B这个类,它怎么知道可以在BFactory的getBInstance()
方法返回的对象上调用B类的f()方法?

解决方案 »

  1.   

    import只是在编译的时候起到作用,在运行时都是通过类的全路径来查找类的,所以通过方法获得的对象带有类的全路径,所以不需要import也可以找到。
      

  2.   

    工厂:
    如果你需要一个apple,那么你只需要找种植apple的农夫, 而不要自己去摘
      

  3.   

    楼上的看上去虽然绕口,其实就是这个意思。
    需要import的只是你用到的类。B是这个类方法的返回值,你没有显示用到。
      

  4.   

    类加载器一次加载进去后,所有的类被加载完,执行文件的内存划分就固定了,import一次就够了
      

  5.   

    通俗一点儿的说,你只要跟着代码一步步运行,该有的import都有就行...