我搜索一个与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();
}
}
但我会避免创建这个类,是否可能?
答案 0 :(得分:0)
不,value-type
用于类型转换,请注意,如果com.test.Mapper.class.isAssingnableFrom(com.test.Mapper1.class)
返回true
,则会被接受。
但是,您可以使用Java配置类来强制执行泛型类型检查。