5

私はコレクション楽器を持っています。私のSomeClass.javaで、temp.xmlファイルでクラスSomeClass.javaのBeanを宣言します。xmlで、2つの文字列オブジェクトをコレクションに追加します。

私の質問は、コレクションはインターフェイスであるためインスタンス化できず、リストもインターフェイスであるため、実行できないと思います。

 Collection<String> someCollection = new List<String>();

xmlファイルでlistタグを使用すると、Javaコードがどのように機能するか知りたいです。つまり、オブジェクトはリンクリスト、配列リスト、またはある種のリストに格納されますか?

4

2 に答える 2

11

これはに依存しますApplicationContext。実装はそれぞれ異なる可能性がありますが、結果がであると確信できますList。アカウンティングドキュメント

別のカスタム名前空間ユーティリティは、リストを作成するためのものです。最初のBean定義は、少し短くて読みやすいことを除いて、ListFactoryBeanの例と同じです。2番目のBean定義は同じですが、list-class属性を使用して、使用するList実装を指定する点が異なります。list-class属性が使用されていない場合、ApplicationContextは実装クラスを選択します。

<util:list id="messageUtilList">
    <ref bean="stringMessage01"/>
    <ref bean="stringMessage02"/>
    <value>Spring is fun to learn.</value>
</util:list>

<util:list id="messageUtilLinkedList" 
           list-class="java.util.LinkedList">
    <ref bean="stringMessage01"/>
    <ref bean="stringMessage02"/>
    <value>Spring is fun to learn.</value>
</util:list>

の実装をListFactoryBean確認するArrayListと、特定のリストタイプが指定されていない場合にインスタンス化されるデフォルトのリスト実装であることがわかります。このタスクを実行するコードは次のとおりです。

if (this.targetListClass != null) {
    result = (List) BeanUtils.instantiateClass(this.targetListClass);
}
else {
    result = new ArrayList(this.sourceList.size());
}
于 2012-07-09T16:20:43.777 に答える