0

我从来没有深入研究过Java。最近,我不得不处理一个我想调查的行为,因为我还没有完全理解它。

你能解释一下为什么主包不需要导入包b吗?虽然 aa 方法的参数是 B 类型。

此代码正常工作。

这种特殊情况可以被视为内联依赖注入吗?

package c;
import b.*;
public class C {
    B b=new B(); 

    public B cc(){ 
        return b; 
    }

}

package a;
import b.*; 

public class A {

    public void aa(B b) {}
}


package b; 
public class B {}



import a.A; 
import c.C; 

public class Test {

    public static void main(String[] args) {

        A a = new A(); 
        C c = new C();
        a.aa(c.cc()); 
        System.out.print("Test"); 
    }
}
4

1 回答 1

5

您只需要导入您在源代码中明确提及的类型。当您调用该cc方法时,编译器已经清楚哪种类型是返回值。导入只是为了消除对B完全限定类型名称的提及b.B

不,这与依赖注入无关。在那个短语中,“依赖”是指一个对象对另一个对象的运行时依赖,与 Java 类型之间的编译时依赖无关。

于 2012-10-28T10:49:21.887 回答