依存性注入のこの初心者向けガイドの最初のコード例では、完全に理解しているとは思えないいくつかの新しい構成に遭遇しました。
// Instantiate CabAgency, and satisfy its dependency on an airlineagency.
Constructor constructor = cabAgencyClass.getConstructor
(new Class[]{AirlineAgency.class});
cabAgency = (CabAgency) constructor.newInstance
(new Object[]{airlineAgency});
どういうずnew Class[]{AirlineAgency.class}
、実際に意味していますか?
その目的がConstructor
インスタンスを作成することであることを理解してAirlineAgency.class
いますが、構文はどのようにnew Class[]{}
これを実現しますか?
[]
オブジェクトが1つしか含まれていないのに、なぜ配列の概念なのですか?
{}
ここの構文は何ですか?なんで()
?
new Class[] { AirlineAgency.Class }
Class
オブジェクトの1要素の配列を作成し、唯一の要素をに初期化しますAirlineAgency.class
。に似ていnew int[] { 42 }
ます。
コードは基本的にこれと同等です:
Class[] parameterTypes = new Class[1];
parameterTypes[0] = AirlineAgency.class;
Constructor constructor = cabAgencyClass.getConstructor(parameterTypes);
Object[] arguments = new Object[1];
arguments[0] = airlineAgency;
cabAgency = (CabAgency)constructor.newInstance(arguments);
このClass.getConstructor
メソッドでは、コンストラクターのパラメーター型の配列が必要で(使用する適切なオーバーロードを見つけるため)、同様Constructor.newInstance
に引数の配列が必要です。それがそのように行われる理由です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加