gpt4 book ai didi

java - 如何在Java中动态改变对象的泛型类型?

转载 作者:行者123 更新时间:2023-11-30 01:48:11 28 4
gpt4 key购买 nike

我的 Spring 批处理代码读取数据并将其写入数据库。我有两个批处理作业类,并且这两个作业在下面的读取器对象处都有具有不同 pojo 通用类型(如 Pojo1 和 Pojo2)的读取器逻辑(几乎相同)。

FlatFileItemReader<DifferentPojoName> reader = new FlatFileItemReader<>();

现在我想在单独的 @Component 类中创建通用读取器逻辑。这样两个作业类将使用相同的读取器逻辑。

但问题是如何在阅读器对象中动态更改 Pojo 类型?

请提出建议。

最佳答案

How to change an object's generic type dynamically in Java?

泛型是用于提高代码类型安全性的编译功能。
所以这是不可能的。

更简洁的方法是使用它所需的泛型来声明不同的 FlatFileItemReader beans。
@Bean 注释可能会有所帮助。

@Bean
public FlatFileItemReader<Foo> readerFoo(){
return new FlatFileItemReader<>();
}

@Bean
public FlatFileItemReader<Bar> readerBar(){
return new FlatFileItemReader<>();
}

现在将它们注入(inject)到您需要的地方:

@Autowired
FlatFileItemReader<Bar> readerBar;

@Autowired
FlatFileItemReader<Foo> readerFoo;

关于java - 如何在Java中动态改变对象的泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57131218/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com