我从未深入研究过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");
}
}
答案 0 :(得分:5)
您只需要导入源代码中明确提到的类型。当您调用cc
方法时,编译器已经清楚哪种类型是返回值。导入仅用于将B
的提及消除歧义为完全限定的类型名称b.B
。
不,这与依赖注入无关。在该短语中,“依赖”表示对象与另一个对象的运行时依赖性,与Java类型之间的编译时依赖性无关。