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 に答える