easyexcel
easyexcel copied to clipboard
* 修复子类@ExcelIgnore未生效 [Issue #2764](https://github.com/alibaba/easyexcel/issues/2764)
fix #2764
当子类存在与父类相同名字成员变量时,
如果父类注解为ExcelProperty
,子类注解为ExcelIgnore
,结果仍然会输出该列。
由于库中解析成员变量的顺序是从先子类后父类,
所以ignoreMap
中如果存在成员变量名,即表明子类已注解为ExcelIgnore
,可以忽略该列。
这个需要补充下测试案例
补充测试案例时发现个问题,想确认下我们的期望行为。
前提是子类和父类拥有同名属性
子类注解 | 父类注解 | 期望行为 |
---|---|---|
ExcelIgnore | ExcelProperty | 忽略该项目 |
ExcelIgnore | ExcelIgnore | 忽略该项目 |
ExcelProperty | ExcelProperty | 同时包含父类和子类?还是只包含子类该项目? |
ExcelProperty | ExcelIgnore | 包含该项目 |
重新改了代码,添加 excelPropertyFieldMap
记录所有已经解析为 Excel 列的属性。
如果发现重复,即表明父类拥有和子类同名属性,可以忽略该父类属性。
已补充以下测试案例: 前提是子类和父类拥有同名属性
子类注解 | 父类注解 | 期望行为 |
---|---|---|
ExcelIgnore | ExcelProperty | 忽略该项目 |
ExcelIgnore | ExcelIgnore | 忽略该项目 |
ExcelProperty | ExcelProperty | 只包含子类该项目 |
ExcelProperty | ExcelIgnore | 只包含子类该项目 |
@zhuangjiaju 测试用例补上了