gpt4 book ai didi

java - 标签在spring中是如何工作的

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:49 28 4
gpt4 key购买 nike

我有一个 Collection 工具;在我的 SomeClass.java 中,我在我的 temp.xml 文件中声明了一个类 SomeClass.java 的 bean。在 xml 中,我将两个字符串对象添加到集合中。

我的问题是 Collection 是一个接口(interface)所以我不能实例化它而 List 也是一个接口(interface)所以我认为我们做不到

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

我想知道当我们在 xml 文件中使用 list 标签时,java 代码是如何工作的。意思是对象存储在链表或数组列表或某种类型的列表中?

最佳答案

这取决于 ApplicationContext。每个实现可能不同,但您可以确定结果是 List。编码documentation :

Another custom namespace utility is for creating lists. The first bean definition is identical to the ListFactoryBean example except it's a little shorter and easier to read. The second bean definition is the same except it uses the list-class attribute to specify what List implementation to use. When the list-class attribute isn't used, the ApplicationContext will choose the implementation class.

<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>

检查 implementation of ListFactoryBean您可以看到 ArrayList 是默认的列表实现,如果没有提供特定的列表类型,它就会被实例化。执行此任务的代码片段是:

if (this.targetListClass != null) {
result = (List) BeanUtils.instantiateClass(this.targetListClass);
}
else {
result = new ArrayList(this.sourceList.size());
}

关于java - <list>标签在spring中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399047/

28 4 0