Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:将某种类型的数组或列表注入bean_Java_Spring - Fatal编程技术网

Java Spring:将某种类型的数组或列表注入bean

Java Spring:将某种类型的数组或列表注入bean,java,spring,Java,Spring,如果我有一个接口I,以及一些实现它的类,那么可以将数组I[]或List注入bean吗?我知道可以使用为列表执行此操作,但我想在这里参数化我的列表-要么这样,要么获取类型为I的数组 列表/数组中的元素数是固定的,并在运行前确定 感谢您提前提供反馈:-)这是不可能实现的,因为编译时会进行JAVA类型的擦除。JAVA泛型仅在编译时可用,用于确保类型安全。在运行时,只剩下对象(引用) 确保类型安全(但仍然是运行时)的唯一方法是使用任何类型的数组并使用spring或标记填充数据。然后在运行时,当您尝试用字

如果我有一个接口
I
,以及一些实现它的类,那么可以将数组
I[]
List
注入bean吗?我知道可以使用
列表
执行此操作,但我想在这里参数化我的列表-要么这样,要么获取类型为
I
的数组

列表/数组中的元素数是固定的,并在运行前确定


感谢您提前提供反馈:-)

这是不可能实现的,因为编译时会进行JAVA类型的擦除。JAVA泛型仅在编译时可用,用于确保类型安全。在运行时,只剩下对象(引用)

确保类型安全(但仍然是运行时)的唯一方法是使用任何类型的数组并使用spring或标记填充数据。然后在运行时,当您尝试用字符串填充整数[]时,您将得到一个异常


如果您使用泛型,您可以使用Set,并且在运行时由于所提到的类型擦除而以Set结束

如果需要基于泛型类型的动态自动布线,则由于类型擦除,不需要。如果您只想连接定义为type
list
(或其他类型)的列表,则没有任何东西可以阻止您这样做,例如:

应用程序上下文:

<util:list id="theList">
    <value>a</value>
    <value>b</value>
</util:list>

A.
B
Java类:

@Resource(name = "theList")
List<String> theList;  
@Resource(name=“theList”)
列出清单;

但是,这不会提供类型安全性。

I Spring 3.1可以将其注入为:

@Inject
List<I> list;

这篇文章提出了另一种观点。但是,我不确定这是否适用于接口。您可以定义值的解释方式,但不能定义类型安全性。类型擦除:错误,因为列表中的
列表中没有任何内容被“擦除”
字段(或方法参数)声明。类型擦除不是这个答案所暗示的那样;只需查看,特别是
通用声明
参数化类型
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/util    http://www.springframework.org/schema/util/spring-util-2.5.xsd">


<util:list id="myList" value-type="java.lang.String">
    <value>foo</value>
    <value>bar</value>
</util:list>