我想创建一个小框架,并希望提供一些默认类,当用户没有提供实现类时应该加载这些类。
此行为应类似于 spring-boot
。
问题:我想要创建的许多类应该是通用的,并且只需要用户定义类类型。
无论如何,这会迫使用户显式实现每个类并提供类类型。
有什么办法可以解决这个问题吗?用户如何提供应该在泛型上使用的类类型,而不必显式实现泛型类?这可能吗?
框架:
@Configuration
public class AppConfig {
@Bean
@ConditionalOnMissingBean
public BaseValidator<T extends MyReq> defaultValidator() {
return new BaseValidator<T extends MyReq>();
}
}
自定义应用程序:
@Configuration
@EnableAutoConfiguration
@Import(AppConfig.class)
public CustomConfig {
}
//我想防止用户必须按如下方式实现每个泛型类:
@Component
public class MyValidator extends BaseValidator<CustomReq> {
}
是否有可能用户只提供 CustomReq.class
,并且 BaseValidator
会使用提供的类类型自动实例化?
最佳答案
您可以使用 Class<T extends MyReq>
来克服它构造函数参数,如下所示:
public class BeanPropertyRowMapper<T> implements RowMapper<T> {
private Class<T> mappedClass;
public BeanPropertyRowMapper(Class<T> mappedClass) {
initialize(mappedClass);
}
}
关于java - 如何在 spring-boot 中为泛型类提供类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25745917/