我搜索了一个与 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>
奇怪的是,这个 bean 有效。但我可以使用在通用情况下输入的任何内容,因此不是专门的。
但我找不到输入通用对象的解决方案 com.test.Mapper<com.test.MyModel, com.test.MyCommand, com.test.MyContext>
,这在值类型中是不可能的。除了创建一个空类来替换 com.test.CompositeMapper
之外,我没有找到其他解决方案在我的 bean 里。例如:
public class MyCompositeMapper extends CompositeMapper<MyModel, MyCommand, MyContext>
{
public MyCompositeMapper()
{
super();
}
}
但是我会避免创建此类,这可能吗?
不,value-type
用于类型转换,因此请注意,如果 com.test.Mapper.class.isAssingnableFrom(com.test.Mapper1.class)
返回 true
,它将被接受。
但是,您可以使用 Java 配置类来强制执行泛型类型检查。
我是一名优秀的程序员,十分优秀!