在xmlbean中使用带有类型参数的泛型类

时间:2015-04-17 09:18:17

标签: java spring xmlbeans

我搜索一个与bean一起使用的解决方案,如下所示:

public class CompositeMapper<T extends Model, U extends Command, C extends Context> implements Mapper<T, U, C>
{ 
    protected List<Mapper<T, U, C>> mappers;

    /* ... */
}

我会使用这样的bean:

<bean id="beanMapper" class="com.test.CompositeMapper">
    <property name="mappers">
        <list value-type="com.test.Mapper">
            <bean class="com.test.Mapper1"/>
            <bean class="com.test.Mapper2"/>
            <bean class="com.test.Mapper2"/>
        </list>
    </property>
</bean>

Streangly,这个bean有效。但我可以使用在通用案例中输入的任何内容,因此不是专门的。

但是我没有找到键入我的通用对象com.test.Mapper<com.test.MyModel, com.test.MyCommand, com.test.MyContext>的解决方案,它在值类型中是不可能的。我没有找到其他解决方案,而不是在我的bean中为替换com.test.CompositeMapper创建一个空类。例如:

public class MyCompositeMapper extends CompositeMapper<MyModel, MyCommand, MyContext>
{
    public MyCompositeMapper()
    {
        super();
    }
}

但我会避免创建这个类,是否可能?

1 个答案:

答案 0 :(得分:0)

不,value-type用于类型转换,请注意,如果com.test.Mapper.class.isAssingnableFrom(com.test.Mapper1.class)返回true,则会被接受。

但是,您可以使用Java配置类来强制执行泛型类型检查。