如何重写外部Jar包类的方法?OpenCSV继承后@Override失效问题
问题原因
你自定义类中定义的generateHeader()是无参数方法,和父类ColumnPositionMappingStrategy中的generateHeader方法签名不匹配,不属于重写父类方法,因此@Override注解校验失败报错。
父类的generateHeader方法签名如下:
public String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException
修复方案
调整自定义方法的参数、异常声明和父类保持一致即可,建议保留父类原方法的调用,避免父类内部的columnIndexForWriting等状态变量未初始化导致后续写入CSV时字段错位:
class CustomMappingStrategy<T> extends ColumnPositionMappingStrategy<T> { private static final String[] HEADER = new String[]{"TradeID", "GWML GUID", "MXML GUID", "GWML File", "MxML File", "MxML Counterparty", "GWML Counterparty"}; @Override public String[] generateHeader(T bean) throws CsvRequiredFieldEmptyException { // 调用父类方法完成内部状态初始化,不需要可以根据业务删除 super.generateHeader(bean); return HEADER; } }
内容的提问来源于stack exchange,提问作者Jithin Variyar
相关产品推荐
相关产品推荐

