首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中以通用方式编写此方法

如何在java中以通用方式编写此方法
EN

Stack Overflow用户
提问于 2019-08-13 10:28:27
回答 1查看 280关注 0票数 1

目前,我已经为五个不同的类实现了这个方法,为五个不同的文本文件配置FlatFileReader并加载到DB表中。

我想知道是否有一种方法可以在一个普通的地方实现这个方法,这样我的每个文件都会调用这个方法来配置我的读取器来读取相应的文件。

每个文件都会发送不同的实体类来加载它们的文件。像初级实体,ChildEntity1,ChildEntity2,ChildEntity3,ChildEntity4。

代码语言:javascript
复制
private void flatFileItemReaderConfig(FlatFileItemReader<PrimaryEntity> flatFileReader,
        String fileName, String incomingHeader)
{
    // set delimiter as '|'
    DefaultLineMapper<PrimaryEntity> defaultLineMapper = new DefaultLineMapper<>();

    DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer("|");
    delimitedLineTokenizer.setNames(convertHeaderToEntityAttrib(fileName, incomingHeader));
    defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);

    // convert each record into primaryentity
    BeanWrapperFieldSetMapper<PrimaryEntity> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();
    beanWrapperFieldSetMapper.setTargetType(PrimaryEntity.class);
    beanWrapperFieldSetMapper.setCustomEditors(getCustomFormatters());

    defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);

    flatFileReader.setLineMapper(defaultLineMapper);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-13 10:55:25

向方法中添加泛型

代码语言:javascript
复制
private <T> void flatFileItemReaderConfig(FlatFileItemReader<T> flatFileReader, String fileName, String incomingHeader, Class<T> clazz) {

    // set delimiter as '|'
    DefaultLineMapper<T> defaultLineMapper = new DefaultLineMapper<>();

    DelimitedLineTokenizer delimitedLineTokenizer = new DelimitedLineTokenizer("|");
    delimitedLineTokenizer.setNames(convertHeaderToEntityAttrib(fileName, incomingHeader));
    defaultLineMapper.setLineTokenizer(delimitedLineTokenizer);

    // convert each record into primary entity
    BeanWrapperFieldSetMapper<T> beanWrapperFieldSetMapper = new BeanWrapperFieldSetMapper<>();
    beanWrapperFieldSetMapper.setTargetType(clazz);
    beanWrapperFieldSetMapper.setCustomEditors(getCustomFormatters());
    defaultLineMapper.setFieldSetMapper(beanWrapperFieldSetMapper);
    flatFileReader.setLineMapper(defaultLineMapper);
}

如果只希望将使用限制在列出的实体上,请创建由所有具体实体(PrimaryEntity, ChildEntity1, ChildEntity2, ChildEntity3, ChildEntity4)实现的公共接口实体,并将签名更改为

代码语言:javascript
复制
private <T extends Entity> void flatFileItemReaderConfig(...)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57475860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档